Transaktionen im Entity Framework verstehen

8

Hi Ich versuche, Transaktionen mit Entity Framework zu verwenden. Bei so vielen online verfügbaren Informationen über die verschiedenen Möglichkeiten, Transaktionen durchzuführen, muss ich sagen, dass ich auf dem richtigen Weg etwas verwirrt bin. Ich habe eine Beispieldatenbank mit zwei Tabellen Employee und Company. Die Employee-Tabelle hat einen Fremdschlüssel, der sich auf die Firmen-ID bezieht. Wenn ich eine Transaktion implementieren möchte, bei der ich einen Datensatz in die Company-Tabelle und dann einen Datensatz in die Employee-Tabelle einfüge und dies tun möchte, damit Datensätze nur dann eingefügt werden, wenn beide erfolgreich sind, habe ich den folgenden Code.

%Vor%

Ich wollte wissen, ob dies der richtige Weg zur Umsetzung von Transaktionen ist. Wenn es dann ist, was sind die Funktionen SaveChanges(false) und scope.AcceptAllChanges() ? Jede Information wäre hilfreich.

    
nighthawk457 26.11.2011, 00:19
quelle

2 Antworten

14

In Ihrem Fall müssen Sie keine Verbindung oder Transaktion verwalten: Entity Framework wird dies für Sie tun. Wenn Sie EF nicht mit einer geöffneten Verbindung (aber mit einer Verbindungszeichenfolge) versorgen, wird während des Aufrufs von context.SaveChanges() eine Verbindung geöffnet und eine Transaktion gestartet. Wenn während dieses Aufrufs ein Fehler auftritt, wird die Transaktion zurückgesetzt.

Mit anderen Worten, Ihre Methode kann einfach so aussehen:

%Vor%     
Steven 26.11.2011, 00:34
quelle
0

1 - Dieser Dienst (ich denke Transaktionsservice) muss run im Client sein, um TransactionScope

zu unterstützen

2-Nützlich, wenn Sie tow oder mehr Datenbanken in Ihrer Anwendung haben und Sie möchten, dass alle Datenbanken transaktional aktualisiert werden (z. B. Änderung der Verbindungszeichenfolge Ihres Kontexts).

3 - Wenn Sie eine Datenbank haben, verwenden Sie besser SaveChanges (), die die Transaktion intern implementieren.

    
Reza ArabQaeni 26.11.2011 00:35
quelle