如何从实体框架中的存储过程中获取返回值?

时间:2016-07-29 19:33:20

标签: c# sql-server entity-framework

我有一个存储过程,它将服务中的新记录插入数据库或更新现有记录。 但是如果成功插入/更新我需要显示true,如果失败,我需要在响应中显示false。

所以我的存储过程调用来自EF

result = database.usp_sp_name(parameters);
if (result==0)
    return true;
else 
    return false;

我尝试了上面的代码,因为我在MSDN网站上读到,如果成功的事务意味着,结果将为0.但即使是插入记录或更新记录,我也得到错误的响应。

1 个答案:

答案 0 :(得分:0)

在你的代码中,创建一个bool,它将保存storedproc的结果,如果storedproc的结果为1,则返回true。否则为false。

bool result = _entites.StoredProc(parameters);
return (result == 1) ? true: false;

但是在你的存储过程中 您应该创建一个返回类似

的值的过程
CREATE PROCEDURE [dbo].[StoredProc]
    @parameter
AS
BEGIN
    DECLARE @result int
    DECLARE @param nvarchar(255)
    SET @param = @parameter

    INSERT INTO (field1) VALUES (@param)

    IF @@ERROR = 0
        SET @result = 1
    ELSE 
        SET @result = 0

RETURN @result

@@如果T-SQl语句没有遇到错误,则返回0。您可以使用它将结果设置为1或0.有关@@error的详细信息,请参阅此链接。