gpt4 book ai didi

sql-server - 带有 ReturnValue 参数的 EF ExecuteStoredCommand

转载 作者:行者123 更新时间:2023-12-02 02:58:55 26 4
gpt4 key购买 nike

我正在创建一个需要与旧代码交互的新应用程序:(。

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

我的 Entity Framework /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;

关于sql-server - 带有 ReturnValue 参数的 EF ExecuteStoredCommand,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8452438/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com