分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 软件开发

.NET ?CORE ?EF 框架调用存储过程

发布时间:2023-09-06 01:43责任编辑:白小东关键词:.NET
//查 获取信息
string userId =888886868886; ?????//多个参数多表组合值 ???????????SqlParameter[] Param = ???????????????{ ?????????????????new SqlParameter("@UserId", System.Data.SqlDbType.VarChar) ???????????????}; ???????????if (string.IsNullOrEmpty(userId)) ???????????{ Param[0].Value = DBNull.Value; } ???????????else ???????????{ Param[0].Value = userId; } ???????????var userdata = await _context.ExecSpAsync("SP_GetList", Param);
 ??????/// <summary> ???????/// 异步执行带有参数的存储过程方法 获取信息集合以及返回空值处理 ???????/// </summary> ???????/// <param name="db"></param> ???????/// <param name="sql"></param> ???????/// <param name="sqlParams"></param> ???????/// <returns></returns> ???????public async static Task<ArrayList> ExecSpAsync(this DefaultDbContext db, string sql, SqlParameter[] sqlParams) ???????{ ???????????var connection = db.Database.GetDbConnection(); ???????????using (var cmd = connection.CreateCommand()) ???????????{ ???????????????await db.Database.OpenConnectionAsync(); ???????????????cmd.CommandText = sql; ???????????????cmd.CommandType = System.Data.CommandType.StoredProcedure; ???????????????cmd.Parameters.AddRange(sqlParams); ???????????????var dr = await cmd.ExecuteReaderAsync(); ???????????????var columnSchema = dr.GetColumnSchema(); ???????????????var data = new ArrayList(); ???????????????while (await dr.ReadAsync()) ???????????????{ ???????????????????var item = new Dictionary<string, object>(); ???????????????????foreach (var kv in columnSchema) ???????????????????{ ???????????????????????if (kv.ColumnOrdinal.HasValue) ???????????????????????{ ???????????????????????????var itemVal = dr.GetValue(kv.ColumnOrdinal.Value); ???????????????????????????item.Add(kv.ColumnName, itemVal.GetType() != typeof(DBNull) ? itemVal:""); ???????????????????????} ???????????????????} ???????????????????data.Add(item); ???????????????} ???????????????dr.Dispose(); ???????????????return data; ???????????} ???????} ???????/// <summary> ???????/// 异步执行带有参数的存储过程方法 ?增删改操作以及返回带有输出的参数 ???????/// </summary> ???????/// <param name="db"></param> ???????/// <param name="sql"></param> ???????/// <param name="sqlParams"></param> ???????/// <returns></returns> ???????public async static Task<int> ExecuteNonQueryAsync(this DefaultDbContext db, string sql, SqlParameter[] sqlParams) ???????{ ???????????int numint; ???????????var connection = db.Database.GetDbConnection(); ???????????using (var cmd = connection.CreateCommand()) ???????????{ ???????????????await db.Database.OpenConnectionAsync(); ???????????????cmd.CommandText = sql; ???????????????cmd.CommandType = System.Data.CommandType.StoredProcedure; ???????????????cmd.Parameters.AddRange(sqlParams); ???????????????numint = await cmd.ExecuteNonQueryAsync(); ???????????} ??????????????????????????????return numint; ?????????}
//增删改
SqlParameter[] Param = ???????????????{ ????????????????new SqlParameter("@MobilePhone", System.Data.SqlDbType.VarChar), ?????????????????new SqlParameter("@PayPrice", System.Data.SqlDbType.VarChar), ???????????new SqlParameter("@rt_code", System.Data.SqlDbType.NVarChar, 20), ?????????????????new SqlParameter("@rt_msg", System.Data.SqlDbType.NVarChar, 200), ???//输出一定要定义字符类型长度 以免报错 ?????????????????????????????????}; ???????????if (string.IsNullOrEmpty(strMobilePhone)) ???????????{ Param[0].Value = DBNull.Value; } ???????????else ???????????{ Param[0].Value = strMobilePhone; } ???????????Param[1].Value = strPayPrice; ???????????if (string.IsNullOrEmpty(strParkUserId)) ???????????{ Param[2].Value = DBNull.Value; } ???????????else ???????????{ Param[2].Value = strParkUserId; } ??????????????????????Param[2].Direction = ParameterDirection.Output; ???????????Param[3].Direction = ParameterDirection.Output; ??????????int numdata = await _dbcontext.ExecuteNonQueryAsync("SP_Pay", Param); ???????????string rtcode = Param[2].Value.ToString(); ???????????string rtmessage = Param[3].Value.ToString(); ???????????if (numdata < 0) ???????????{ ???????????????return AsResult.Error(Convert.ToInt32(rtcode), rtmessage); ???????????}

.NET ?CORE ?EF 框架调用存储过程

原文地址:https://www.cnblogs.com/Warmsunshine/p/8473988.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved