gpt4 book ai didi

stored-procedures - Entity Framework 使用函数导入时无法获取输出参数

转载 作者:行者123 更新时间:2023-12-03 22:49:37 26 4
gpt4 key购买 nike

这是我的 SQL Server 存储过程:

ALTER PROCEDURE [dbo].[SearchUser]
(@Text NVARCHAR(100),
@TotalRows INT = 0 OUTPUT)
AS
BEGIN
SELECT @TotalRows=1000
SELECT * from Users
END

还有我的 C# 代码
using (var context = new TestDBEntities())
{
var outputParameter = new ObjectParameter("TotalRows", typeof(Int32));
context.SearchUser("", outputParameter);
Response.Write(outputParameter.Value);
}

然而 outputParameter.Value始终为空。

谁能告诉我为什么?

最佳答案

存储过程执行期间由其实际值填充的输出参数。

但是表值存储过程实际上仅在您尝试迭代结果记录集但不调用包装器方法时才执行。

所以,这不起作用:

using (var context = new TestDBEntities()) 
{
var outputParameter = new ObjectParameter("TotalRows", typeof(Int32));
context.SearchUser("", outputParameter);

// Paremeter value is null, because the stored procedure haven't been executed
Response.Write(outputParameter.Value);

}

这样做:
using (var context = new TestDBEntities()) 
{
var outputParameter = new ObjectParameter("TotalRows", typeof(Int32));

// Procedure does not executes here, we just receive a reference to the output parameter
var results = context.SearchUser("", outputParameter);

// Forcing procedure execution
results.ToList();

// Parameter has it's actual value
Response.Write(outputParameter.Value);

}

当您使用不返回任何记录集的存储过程时,它们会在方法调用后立即执行,因此您在输出参数中有实际值。

关于stored-procedures - Entity Framework 使用函数导入时无法获取输出参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5881359/

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