LINQ to SQL - Wie gespeicherte Prozeduren wirken mit unsubmited Datacontext Änderungen?
-
26-09-2019 - |
Frage
Jemand hier gefragt:
"Linq to SQL- ermöglicht SPs aufrufen. Wenn dieser SP ein Insert update / delete / ausführt, muss ich SubmitChanges (), nachdem es?"
Und die Antwort war:
„Nein, Sie nicht. Der Code funktioniert. Änderungen Senden ist nur mit modifizierten LINQ to SQL betroffenen Objekte und nicht Procs gespeichert.“
Ich möchte nur klarstellen:
(Bitte entschuldigen Sie mich, ich bin relativ neu in LINQ)
Ja, aber nicht eine gespeicherte Prozedur Bypass das Datacontext-Objekt und ändern Sie die Datenbank selbst? (Während Linq sich nur auf das Objekt Datacontext, bis die datacontext.submitchanges Methode aufgerufen wird, wo es modifiziert dann die Datenbank)
Kann ich eine gespeicherte Prozedur irgendwie mein Datacontext-Objekt ändern? Ist es dies bereits tun?
Kann ich es so, dass
- wenn ich einen SP mit Linq nennen (und ich gehe davon aus, dass es direkt auf die Datenbank modifiziert),
- dann Linq verwenden, um mein Datacontext-Objekt zu ändern, und senden Sie die Änderungen, die ich an mein Datacontext-Objekt gemacht,
die beiden verschiedenen Änderungen I (One mit der SP, der andere mit Linq zu meinem Datacontext) gemacht wird nicht einmischen?
Was ich wirklich will, ist eine Möglichkeit, meine gespeicherten Prozeduren haben meine Datacontext ändern. Ist das möglich?
Ich sollte erwähnen, dass ich eine Website von SQL in LINQ bin Umwandlung, die Verfahren in erster Linie gespeichert hat und versucht, meine Kämpfe zu holen, mit denen gespeicherte Prozeduren zu LINQ konvertieren und die in SQL zu halten und nur SP Anrufe, um sie mit LINQ.
Vielen Dank für Ihre Hilfe, -Jeff
Lösung
FWIW, unsere Lackmustest ist jede trivial ‚crud‘ Typ PROC die Einsätze / aktualisiert einen einzelnen Datensatz zu einem ORM bewegen sich über können
Allerdings neigen wir die erweiterte Procs (Batch-Updates oder hoch Leistung empfindlich sind) zu verlassen, ‚wie‘.
Aber ja, müssen Sie genannt SubmitChanges haben (), bevor ein Proc aufrufen, die über den Stand der Daten abhängt in der Datacontext geändert
Möglicherweise nicht verwandt, wenn Sie brauchen, um Steuereinheiten der Arbeit, Blick auf TransactionScopes um Ihren Code setzen?
Andere Tipps
Wenn Sie Datensätze über gespeicherte Prozedur aktualisieren, Ihre geladen (und nachverfolgt) Objekte können veralten. Wenn Sie SubmitChanges mit veralteten Objekte aufrufen, werden Sie Gleichzeitigkeit Ausnahmen erhalten. Sie können ein veraltetes Objekt aktualisieren Sie die Refresh
Methode auf DataContext
verwendet wird.