Come utilizzare la transazione in Entity Framework?

.net c# entity-framework visual-studio-2008 visual-studio-2010

Domanda

Come utilizzare le transazioni in Entity Framework? Ho letto alcuni collegamenti su Stackoverflow: Utilizzo di transazioni o SaveChanges (false) e AcceptAllChanges ()?

MA; ho 3 tavoli quindi ho 3 entità:

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);

Personel, Prim, Finans my tables. Se si guarda la tabella Prim, è possibile visualizzare il valore float del valore Prim se scrivo una casella di testo non il valore float che deve essere eseguita dalla transazione.

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;
    }
}

Come lo posso fare?

Risposta accettata

Quando si effettua la chiamata a SaveChanges , Entity Framework eseguirà tali operazioni in un'unica transazione.

Quando si utilizza la classe TransactionScope , si dice "Voglio ciò che viene eseguito in questo blocco per essere incapsulato in una transazione più grande", che è in effetti ciò che si fa.

Quando si chiama Complete su TransactionScope , è ciò che esegue il commit di tutte le operazioni incapsulate nella transazione definita da TransactionScope .


Risposta popolare

SaveChanges opera all'interno di una transazione. SaveChanges ripristinerà quella transazione e genererà un'eccezione se uno qualsiasi degli oggetti ObjectStateEntry sporchi non può essere mantenuto.

dalla documentazione



Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché