gpt4 book ai didi

c# - Entity Framework ——存储过程返回值

转载 作者:可可西里 更新时间:2023-11-01 08:45:10 25 4
gpt4 key购买 nike

我正在尝试获取存储过程的返回值。以下是此类存储过程的示例:

select
Name,
IsEnabled
from
dbo.something
where
ID = @ID

if @@rowcount = 0
return 1

return

这是一个简单的选择。如果找到 0 行,我的结果集将为空,但我仍然会有返回值。

这是一个不好的例子,因为这是一个选择,所以如果返回 0 行,我肯定能找到。但是,在插入、删除或其他调用中,我们需要此返回值来了解是否存在问题。我一直无法找到获得此返回值的方法。可以得到输出值,可以得到结果集,但是没有返回值。

如果我手动调用 SQL,或者即使我使用 Entity Framework 运行 SqlCommand,我也可以获得返回值,但这不是我想要做的。

有没有人能够使用 Entity Framework 从存储过程中获取返回值?

感谢您的帮助!

最佳答案

我猜对存储过程返回值的支持取决于 Entity Framework 的版本。尽管直接返回值对我不起作用,但我设法使用 OUTPUT 存储过程参数获取了值。示例:

USE [YOUR_DB_NAME]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[TestReturnValue]
@InputValue int = 0,
@Result int OUTPUT
AS
BEGIN
SET NOCOUNT ON;
SELECT @Result = @InputValue
RETURN(@InputValue);
END

这是测试代码:

void TestReturnValue()
{
using (var db = new YourDBContext())
{
var result = new System.Data.Objects.ObjectParameter("Result", 0);
Console.WriteLine("SP returned {0}", db.TestReturnValue(123, result));
Console.WriteLine("Output param {0}", result.Value);
}
}

这是输出:

SP returned -1
Output param 123

如您所见,直接返回值输出了一些垃圾,但 OUTPUT 参数有效!

This article provides general info on two ways of returning values from SP

希望对你有帮助

关于c# - Entity Framework ——存储过程返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10339750/

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