Transaktionsunterstützung

LINQ to SQL unterstützt drei unterschiedliche Transaktionsmodelle. Nachfolgend werden diese Modelle in der Reihenfolge der durchgeführten Prüfungen aufgelistet.

Explizite lokale Transaktion

Wird SubmitChanges aufgerufen und ist die Transaction-Eigenschaft auf eine (IDbTransaction-) Transaktion festgelegt, erfolgt der SubmitChanges-Aufruf im Kontext der gleichen Transaktion.

Es ist Ihre Aufgabe, die Transaktion nach erfolgreicher Ausführung der Transaktion zu bestätigen oder rückgängig zu machen. Die Verbindung, die der Transaktion entspricht, muss zur Verbindung passen, die zum Erstellen des DataContext verwendet wurde. Eine Ausnahme wird ausgelöst, wenn eine andere Verbindung verwendet wird.

Explizit verteilbare Transaktion

Sie können LINQ to SQL-APIs (einschließlich, jedoch nicht begrenzt auf SubmitChanges) im Rahmen einer aktiven Transaction aufrufen. LINQ to SQL erkennt, dass der Aufruf im Bereich einer Transaktion ist und keine neue Transaktion erstellt. LINQ to SQL vermeidet auch, die Verbindung in diesem Fall zu schließen. Sie können Abfragen und SubmitChanges im Kontext einer solchen Transaktion ausführen.

Implizite Transaktion

Wenn Sie SubmitChanges aufrufen, prüft LINQ to SQL, ob der Aufruf im Rahmen einer Transaction erfolgt oder ob die Transaction-Eigenschaft (IDbTransaction) auf eine vom Benutzer gestartete lokale Transaktion festgelegt ist. Wird keine Transaktion gefunden, startet LINQ to SQL eine lokale Transaktion (IDbTransaction) und verwendet diese zur Ausführung der erzeugten SQL-Befehle. Wurden alle SQL-Befehle erfolgreich abgeschlossen, bestätigt LINQ to SQL die lokale Transaktion und kehrt zurück.

Siehe auch