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

前端之家收集整理的这篇文章主要介绍了sql-server – 具有ReturnValue参数的EF ExecuteStoredCommand前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_404_1@我正在创建一个新的应用程序,需要与旧代码进行接口:(.

我试图调用的存储过程使用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;

猜你在找的MsSQL相关文章