10

Wie verwendet man Transaktionen in Entity Framework? Ich lese einige Links auf Stackoverflow: Using Transactions or SaveChanges(false) and AcceptAllChanges()?Wie verwendet man Transaktion in Entity Framework?

ABER; ich habe 3 Tabelle, also ich habe 3 Entitäten:

CREATE TABLE Personel 
(PersonelID integer PRIMARY KEY identity not null, 
Ad varchar(30), 
Soyad varchar(30), 
Meslek varchar(100), 
DogumTarihi datetime, 
DogumYeri nvarchar(100), 
PirimToplamı float); 

Go 

create TABLE Prim 
(PrimID integer PRIMARY KEY identity not null, 
PersonelID integer Foreign KEY references Personel(PersonelID), 
SatisTutari int, 
Prim float, 
SatisTarihi Datetime); 

Go 

CREATE TABLE Finans 
(ID integer PRIMARY KEY identity not null, 
Tutar float); 

Person, Prim, Finans meine Tabellen. Wenn Sie Prim-Tabelle sehen, können Sie Prim Wert Float-Wert sehen, wenn ich ein Textfeld nicht Float-Wert schreiben meine Transaktion muss ausgeführt werden.

using (TestEntities testCtx = new TestEntities()) 
{ 
    using (TransactionScope scope = new TransactionScope()) 
    { 
     // do something... 
     testCtx.Personel.SaveChanges(); 
     // do something... 
     testCtx.Prim.SaveChanges(); 
     // do something... 
     testCtx.Finans.SaveChanges(); 
     scope.Complete(); 
     success = true; 
    } 
} 

Wie kann ich das tun?

+0

Sie verwenden 3 verschiedene Kontext .... Sie versuchen, jede Tabelle unabhängig zu speichern? – Nix

+2

Sie haben bereits den Code, wozu brauchen Sie Hilfe? – nos

+0

Ja, ich möchte 3 Tabelle hinzufügen, aber Transaktion Ich muss – programmerist

Antwort

12

Wenn Sie den Aufruf an SaveChanges tätigen, führt das Entity Framework diese Vorgänge in einer einzigen Transaktion aus.

Wenn Sie die TransactionScope class verwenden, sagen Sie "Ich möchte, was in diesem Block in einer größeren Transaktion gekapselt wird", was Sie tatsächlich tun.

Wenn Sie Complete auf dem TransactionScope aufrufen, führt das die Festschreibung aller Operationen aus, die in der Transaktion eingebettet sind, die durch TransactionScope definiert wird.

1

SaveChanges funktioniert innerhalb einer Transaktion. SaveChanges führt einen Rollback dieser Transaktion aus und löst eine Ausnahme aus, wenn eines der object ObjectStateEntry-Objekte nicht beibehalten werden kann.

vom documentation