加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql-server – 具有ReturnValue参数的EF ExecuteStoredCommand

发布时间:2020-12-12 16:13:50 所属栏目:MsSql教程 来源:网络整理
导读:我正在创建一个新的应用程序,需要与旧代码进行接口:(. 我试图调用的存储过程使用RETURN作为其结果.我尝试执行和使用返回值会导致异常: InvalidOperationException: When executing a command,parameters must be exclusively database parameters or values.
我正在创建一个新的应用程序,需要与旧代码进行接口:(.

我试图调用的存储过程使用RETURN作为其结果.我尝试执行和使用返回值会导致异常:

InvalidOperationException: When executing a command,parameters must be exclusively database parameters or values.

改变存储过程以不同的方式返回值是不希望的,因为它要么更新旧的应用程序或维护几乎重复的存储过程.

遗留存储过程概要:

DECLARE @MyID INT
INSERT INTO MyTable ...
SELECT @MyID = IDENTITY()
RETURN @MyID

我的实体框架/ DbContext工作,它产生上面的InvalidOperationException.

SqlParameter parm = new SqlParameter() {
    ParameterName = "@MyID",Direction = System.Data.ParameterDirection.ReturnValue
 };

 DbContext.Database.ExecuteSqlCommand("EXEC dbo.MyProc",parm);

寻找任何不需要修改存储过程的解决方案.

解决方法

您可以将存储过程的返回值替换为输出参数:
SqlParameter parm = new SqlParameter() {  
    ParameterName = "@MyID",SqlDbType = SqlDbType.Int,Direction = System.Data.ParameterDirection.Output  
 };  

Database.ExecuteSqlCommand("exec @MyId = dbo.MyProc",parm);

int id = (int)parm.Value;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读