2016-07-29 116 views
2

我有一個存儲過程,它將新記錄從服務插入數據庫或更新現有記錄。 但我需要顯示true如果它插入/更新成功,如果失敗,我需要顯示錯誤的迴應。如何從實體框架中的存儲過程中獲取返回值?

所以從EF

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

我的存儲過程調用我嘗試了上面的代碼,因爲我在MSDN網站上閱讀,如果成功的交易手段,結果將是0。但是,即使其插入記錄或更新記錄,我得到的答覆是錯誤的。

+0

這應該工作。如果您從Management Studio調用該SP,它將返回0?你可以在Entity Framework中調試SP的代碼,在那裏你可以看到它是如何調用的以及它返回的。如果它不起作用,你至少應該能夠找到失敗的確切點。 – Andrew

+0

存儲過程是否在過程結束時返回一個值? – grambo25

+0

不是。我的意思是存儲過程中默認的return_Value參數 – user3331421

回答

0

在你的代碼中,創建一個bool,它將保存storedproc的結果,並且如果storedproc的結果爲1,則返回true。否則返回false。

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

但在你的存儲過程 您應該創建如果T-SQL語句沒有遇到錯誤,將返回一個值,這樣

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 

@@ ERROR返回0的過程。您可以使用它將結果設置爲1或0.有關@@error的更多信息,請參閱此鏈接。

相關問題