Entity Framework und SCOPE_IDENTITY

Ich habe eine gespeicherte Prozedur, die das einfügen in eine Tabelle, dann führt diese Linie

SET @returnVal = SCOPE_IDENTITY();

und danach habe ich beide ausprobiert:

SELECT @returnVal

und

return @returnVal

Wenn ich führen Sie die gespeicherte Prozedur in Microsoft SQL Server Management Studio, bekomme ich das erwartete Ergebnis mit SELECT @returnVal - die identity-Spalte für die Eingabe ausgewählt ist.

Aber wenn ich die gespeicherte Prozedur, um meine ADO.Net Entity Data Modell /EntityFramework Klasse /.edmx-Klasse, und führen Sie die gespeicherte Prozedur in meinem C# - code, bekomme ich den Wert -1 zurück, ohne scheitern.

Ist es möglich, den Wert, den ich haben möchte, die neuen Identitätswert zurückgegeben?

Merke ich, dass ich könnte manuell binden Sie die gespeicherte Prozedur, die Sie auf Aktion einfügen der Tabelle in mein Modell - aber dies ist nicht eine option. Es gibt viel zu viele insert-Verfahren, dies zu tun die manuelle Arbeit jedes mal, wenn ich regeneriere meine model-Klasse(N).

  • mögliche Duplikate von Erste SCOPE_IDENTITY von SQL Server auf Einfügen
  • Sind Sie mit ExecuteNonQuery, wenn Sie sollten mit ExecuteScalar?
  • und der code ausgeführt wird ? NonQuery durch Zufall
  • Müssen Sie rufen Sie die sp mit executescalar
  • Ich habe deine Antwort aus die Frage und fügte hinzu, als eine wiki-Antwort unten. Wenn Sie wollen, dies selbst zu tun lassen Sie mich wissen, und ich werde löschen der wiki-Antwort
InformationsquelleAutor Dudeman3000 | 2013-08-27
Schreibe einen Kommentar