EF CODEFIRST WITH ORACLE 存储过程

Posted 尘嚣之上

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EF CODEFIRST WITH ORACLE 存储过程相关的知识,希望对你有一定的参考价值。

EF  CODEFIRST WITH ORACLE

解决存储过程一直没找到解决方案

所以最后也没办法还是用了最基本的解决方案

采用Oracle.ManagedDataAccess提供的ADO基础访问类,不需要再次额外引用第三方类库了。

using Oracle.ManagedDataAccess.Client;

public object[] ExecuteProc(string procName, params DbParameter[] parms)
        {
            MyDbContext dbContext = this.GetDbContext(AccessMode.Write);
            using (var conn = new OracleConnection(dbContext.Database.Connection.ConnectionString))
            {
                List<DbParameter> outParms = parms.Where(p => p.Direction == System.Data.ParameterDirection.Output || p.Direction == System.Data.ParameterDirection.ReturnValue).ToList();
                OracleCommand command = new OracleCommand(procName);
                command.Connection = conn;
                command.CommandType = CommandType.StoredProcedure;

                command.Parameters.AddRange(parms);
                conn.Open();
                command.ExecuteNonQuery();

                command.Parameters.Clear();
                command.Dispose();
                conn.Close();
                object[] values = outParms.Select(r => r.Value).ToArray();
                return values;
            }
        }

调用

 BaseRepository resp = new BaseRepository();
            var p3 = resp.GetParameterOut("COUNT_ROW", System.Data.DbType.Int32, 4);
            object[] o = resp.ExecuteProc("PROC1", p3);
            var ss = p3.Value;

 

以上是关于EF CODEFIRST WITH ORACLE 存储过程的主要内容,如果未能解决你的问题,请参考以下文章

EF 与 NHibernate 与 Oracle

使用带有 EF 6 Code First 的 Oracle MangedDataAccess “提供者没有返回 providermanifesttoken”

oracle 用户在 EF6 Code First 中创建数据库和执行挂起迁移的最低权限是啥

EF实体框架之CodeFirst六

EF实体框架之CodeFirst八

EF| CodeFirst 代码先行