2016-07-29 10 views
2

Ich habe eine gespeicherte Prozedur, die neue Datensätze aus Service in die Datenbank einfügt oder vorhandenen Datensatz aktualisiert. Aber ich muss true anzeigen, wenn es erfolgreich eingefügt/aktualisiert wird und wenn es fehlschlägt, muss ich als Antwort false anzeigen.Wie Abrufen von Rückgabewert von gespeicherter Prozedur in Entitätsframework?

so in meinem Aufruf der gespeicherten Prozedur von EF

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

ich den obigen Code versucht, da ich in der MSDN-Website zu lesen, dass, wenn erfolgreiche Transaktion bedeutet, Ergebnis 0 sein wird Aber auch Rekord seines Einführungssatz oder zu aktualisieren, Ich bekomme eine Antwort als falsch.

+0

Das sollte funktionieren. Wenn Sie diesen SP von Management Studio aus aufrufen, wird 0 zurückgegeben? Sie können den Code für den SP in Entity Framework debuggen, dort können Sie sehen, wie er aufgerufen wird und was er zurückgibt. Wenn es nicht funktioniert, sollten Sie zumindest in der Lage sein zu finden, was genau der Punkt ist, der versagt. – Andrew

+0

Gibt der Stored-Prozess am Ende des Proc einen Wert zurück? – grambo25

+0

Nein. Ich meinte return_Value Parameter, der Standard in gespeicherten Prozedur ist – user3331421

Antwort

0

Erstellen Sie in Ihrem Code ein Bool, das das Ergebnis Ihres Storedproc enthält und true zurückgibt, wenn das Ergebnis Ihres Storedproc 1 ist. Sonst falsch.

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

Aber in Ihrer gespeicherten proc Sie sollen eine Prozedur erstellen, die einen Wert wie diese

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 

@@ Fehler 0 zurück, wenn die T-SQL-Anweisung keine Fehler aufgetreten zurück. Damit können Sie das Ergebnis auf 1 oder 0 setzen. Weitere Informationen finden Sie unter @@error.

Verwandte Themen