//查 获取信息
string userId =; //多个参数多表组合值
SqlParameter[] Param =
{
new SqlParameter("@UserId", System.Data.SqlDbType.VarChar)
}; if (string.IsNullOrEmpty(userId))
{ Param[].Value = DBNull.Value; }
else
{ Param[].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, ),
new SqlParameter("@rt_msg", System.Data.SqlDbType.NVarChar, ), //输出一定要定义字符类型长度 以免报错
};
if (string.IsNullOrEmpty(strMobilePhone))
{ Param[].Value = DBNull.Value; }
else
{ Param[].Value = strMobilePhone; } Param[].Value = strPayPrice; if (string.IsNullOrEmpty(strParkUserId))
{ Param[].Value = DBNull.Value; }
else
{ Param[].Value = strParkUserId; } Param[].Direction = ParameterDirection.Output;
Param[].Direction = ParameterDirection.Output; int numdata = await _dbcontext.ExecuteNonQueryAsync("SP_Pay", Param);
string rtcode = Param[].Value.ToString();
string rtmessage = Param[].Value.ToString();
if (numdata < )
{
return AsResult.Error(Convert.ToInt32(rtcode), rtmessage);
}

存储过程代码:

ALTER PROCEDURE [dbo].[SP_GetList]
(
@UserId varchar(100)
) AS BEGIN begin transaction
begin try
BEGIN SELECT DISTINCT
* FROM UserInfo_test usertest
where usertest.UserID =@UserID
ORDER BY usertest.UserID DESC; END
commit transaction
end try
---------------------------------------------------------------------------------------------------------------------------- begin catch print '执行存储异常' rollback transaction end catch END
CREATE PROCEDURE [dbo].[SP_Pay] 

    (
@MobilePhone varchar(50),
@PayPrice varchar(100) ,
@ParkUserId varchar(50),
@rt_code varchar(20) output,
@rt_msg nvarchar(200) output )
AS
--declare @rt_code varchar(50); --声明变量
declare @before_overprice DECIMAL(9,2);
declare @P_overprice DECIMAL(9,2);--变化后余额
declare @YuanPayPwd nvarchar(100); BEGIN
;
select @before_overprice=isnull(OveragePrice,0) FROM Meb_Overage WHERE ParkUserId=@ParkUserId; IF (@PayPrice is null) BEGIN
set @rt_code= '';
set @rt_msg= '支付金额不能为空!';
RETURN;
END;
IF (@before_overprice=0) BEGIN
set @rt_code= '';
set @rt_msg= '账户余额不足!';
RETURN;
END; IF (@PayPrice>@before_overprice) BEGIN
set @rt_code= '';
set @rt_msg= '当前账户余额不足!';
RETURN;
END; begin transaction
begin try
if(@ParkUserId is not null)
BEGIN
update Meb_Overage set OveragePrice=(OveragePrice-@PayPrice) WHERE ParkUserId = @ParkUserId ; ---支付后金额
select @P_overprice=isnull(OveragePrice,0) FROM Meb_Overage WHERE ParkUserId=@ParkUserId; INSERT INTO Meb_Details(ParkUserId,
PayPrice,
AddTime ,
BalanceStatus )
VALUES
( @ParkUserId,
@PayPrice, --缴费支付金额
SYSDATETIME(),-- CONVERT(varchar(100), GETDATE(), 120)
''--默认
);
END;
commit transaction
set @rt_code= '';
set @rt_msg= '交易成功!';
return end try begin catch set @rt_code= '';
set @rt_msg= '交易失败!'; rollback transaction
end catch
END

.NET CORE EF 框架调用存储过程的更多相关文章

  1. EF 6 调用存储过程时返回多结果集和OUTPUT参数问题

    原文地址:http://q.cnblogs.com/q/56836/ 各位大侠,提问一个关于EF6调用存储过程时返回多结果集和OUTPUT参数问题 目前已经可以调用存储过程并且可以返回多个结果集. 但 ...

  2. C# EF框架调用数据库的函数

    1.在数据库中创建一个自定义函数: REATE FUNCTION [dbo].[f_IsOriginsDisabled] ( ), @needPPTV bit ) RETURNS bit AS BEG ...

  3. 瑞联科技:Pwp3框架 调用存储过程返还数据集合 到前端界面展示

    一:代码结构: 1:Js 代码结构 2:Java 代码结构 二:前端界面展示效果 为了数据安全性:界面数据做了处理 三:全端代码展示 1:main.vop <html> <head& ...

  4. .NET Core EF框架使用SQL server 2008数据库分页问题:Incorrect syntax near 'OFFSET'. Invalid usage of the option NEXT in the FETCH statement

    一. 问题 最近.Net Core程序部署到服务器,采用EF6.本地数据库是SQL server 2016,服务器数据库安装的是SQL server 2008 R2,在用到分页查询时报错如下: { & ...

  5. C# EF中调用 存储过程并调回参数

    TourEntities db = new TourEntities(); List<v_product> v = new List<v_product>(); SqlPara ...

  6. DB First EF中的存储过程、函数、视图

    视图约等于表(属性)存储过程变为方法,方法中调用存储过程 EF可以调用存储过程,DB First的流程是刷新模型,获取存储过程,调用参考:http://blog.csdn.net/sudazf/art ...

  7. .net core EF Core 调用存储过程

    在这里,我们将尝试去学习一下 .net core EF Core 中调用存储过程. 我们知道,EF Core 是不支持直接调用存储过程的,那它又提供了什么样的方式去执行存储过程呢?有如下方法: 1.F ...

  8. ASP.NET MVC深入浅出(被替换) 第一节: 结合EF的本地缓存属性来介绍【EF增删改操作】的几种形式 第三节: EF调用普通SQL语句的两类封装(ExecuteSqlCommand和SqlQuery ) 第四节: EF调用存储过程的通用写法和DBFirst模式子类调用的特有写法 第六节: EF高级属性(二) 之延迟加载、立即加载、显示加载(含导航属性) 第十节: EF的三种追踪

    ASP.NET MVC深入浅出(被替换)   一. 谈情怀-ASP.NET体系 从事.Net开发以来,最先接触的Web开发框架是Asp.Net WebForm,该框架高度封装,为了隐藏Http的无状态 ...

  9. 转:EF调用存储过程、函数

    EF调用存储过程.函数 2014-04-02 09:12:20|  分类: ORM框架|举报|字号 订阅          一.ef4.1 codeFirst 修改表结构 增加字段等 EF code ...

随机推荐

  1. LVM逻辑卷管理测试——逻辑卷扩展、收缩、快照及删除

    一.逻辑卷扩展 [root@lxjtest /]# umount /testLVM/ [root@lxjtest /]# df -h Filesystem Size Used Avail Use% M ...

  2. MATLAB R2018a 输入中文却显示方框问号的问题

    [问题] 安装完成软件后,我把编辑区字体重设为 consolas : 就会出现 输入中文注释却没办法正常显示的问题: [解决办法] 把字体改成 Monospaced (查了一下 说是MATLAB默认字 ...

  3. 利用 WireShark 深入调试网络请求

    来源:伯乐在线 - bestswifter 如有好文章投稿,请点击 → 这里了解详情 背景 最近发现我们产品在打开广告链接(Webview)时有一定概率会非常慢,白屏时间超过 10s,追查广告的过程中 ...

  4. linux下常用文件传输命令(转)

    因为工作原因,需要经常在不同的服务器见进行文件传输,特别是大文件的传输,因此对linux下不同服务器间数据传输命令和工具进行了研究和总结.主要是rcp,scp,rsync,ftp,sftp,lftp, ...

  5. POJ 2513 Colored Sticks (欧拉回路 + 字典树 +并查集)

    Colored Sticks Time Limit: 5000MS   Memory Limit: 128000K Total Submissions: 27097   Accepted: 7175 ...

  6. MVC几种找不到资源的解决方式

    在MVC中,controller中的Action和View中的.cshtml文件名称有一个对应的关系. 当不对应时,有以下几种情况发生: 一.找不到视图的错误 请求URL:http://localho ...

  7. ASP.NET车辆管理系统

    原文地址:https://blog.csdn.net/lisenyang/article/details/46606181 系统开发环境为VS2010,采用ASP.NET框架,数据库采用SQL Ser ...

  8. OpenCV 学习笔记03 直线和圆检测

    检测边缘和轮廓不仅重要,还经常用到,它们也是构成其他复杂操作的基础. 直线和形状检测与边缘和轮廓检测有密切的关系. 霍夫hough 变换是直线和形状检测背后的理论基础.霍夫变化是基于极坐标和向量开展的 ...

  9. RHEL7 禁用gnome-inital-setup

    每次登陆系统后,都会跳出页面gnome-inital-setup 如果觉得讨厌,可以禁止该页面的出现: mkdir ~/.config echo "yes" >> ~/ ...

  10. ViewPager 源码分析(一) —— setAdapter() 与 populate()

    写在前面 做安卓也有一定时间了,虽然常用控件都已大致掌握,然而随着 Android N 的发布,不自觉的愈发焦虑起来.说来惭愧,Android L 的 Material Design 库里的许多控件都 ...