Ruft den Rückgabewert von der gespeicherten Prozedur ab
Bin ich mit Entity Framework 5 mit dem Code-First-Ansatz. Ich Lesen müssen, der return-Wert einer gespeicherten Prozedur; ich bin bereits das Lesen von output-Parametern und das senden von input-Parametern, aber ich weiß nicht, wie zu Lesen, die Wert zurück.
Ist es möglich?
Hier ist der code, den ich verwenden, um den Aufruf der gespeicherten Prozedur:
var outParam = new SqlParameter();
outParam.ParameterName = "@StatusLog";
outParam.SqlDbType = SqlDbType.NVarChar;
outParam.Size = 4000;
outParam.Direction = ParameterDirection.Output;
var code = new SqlParameter();
code.ParameterName = "@Code";
code.Direction = ParameterDirection.Input;
code.SqlDbType = SqlDbType.VarChar;
code.Size = 20;
code.Value = "123";
var data = _context.Database.SqlQuery<Item>("exec spItemData @Code, @StatusLog OUT", code, outParam);
var result = data.FirstOrDefault();
Kommentar zu dem Problem
Eine ähnliche Antwort, die für mich gearbeitet.
InformationsquelleAutor der Frage Daniele Armanasco | 2013-02-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich es gefunden!
Ich kann den return-Wert ein output-parameter, um auf diese Weise verwendet werden:
InformationsquelleAutor der Antwort Daniele Armanasco
Die Lösung von Daniele war nicht für mich arbeiten, bis ich das gefunden blog-post von Diego Vega, die erklärt, dass:
Auch, in meinem Fall, ich war nicht die RÜCKFÜHRUNG einer Person, die ich nur zum ausführen der gespeicherten Prozedur, so dass ich ersetzt
Item
mitobject
im_context.Database.SqlQuery<object>
.Hier ist der Beispielcode:
Hier ein Beispiel für eine gespeicherte Prozedur:
InformationsquelleAutor der Antwort Marcos Dimitrio
In dem Fall, wo die gespeicherte Prozedur nicht über einen output-parameter mache ich die folgenden, effektiv machen einige Sql, gibt eine select-Anweisung;
InformationsquelleAutor der Antwort Kirsten Greed
Können Sie die gespeicherte Prozedur, wie ein EF-Funktion, dann nennen Sie es driectly aus dem Kontext.
Sehen http://www.entityframeworktutorial.net/EntityFramework4.3/execute-stored-procedure-using-dbcontext.aspx
weitere Infos
InformationsquelleAutor der Antwort Geoff Wells
Für alle, die mit einer EDMX-Datei, die Sie hinzufügen können, einen code generation item und verwenden Sie dann den folgenden code t4 zu ersetzen .Kontext.tt. Es erzeugt den code, um Ihre Karte gespeicherte Prozeduren mithilfe der Methode:
Wird es mit SqlQuery<> wenn es gibt ein ResultSet und ExecuteSqlCommand, wenn es nicht ist, aber in beiden Szenarien die aus SqlParameter localSqlExecReturnValue enthalten wird der int-Rückgabewert der Aufruf einer gespeicherten Prozedur. Dies kann verwendet werden, mit anderen Generatoren, es erzeugt nur zusätzlichen code für die gespeicherte Prozedur aufruft.
StoredProcedure.Kontext.tt:
InformationsquelleAutor der Antwort curlyhairedgenius