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;

 

转载于:https://www.cnblogs.com/njcxwz/p/6510823.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值