Comment utiliser Transaction dans Entity Framework?

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

Question

Comment utiliser les transactions dans Entity Framework? J'ai lu des liens sur Stackoverflow: Utilisation de transactions ou SaveChanges (false) et AcceptAllChanges ()?

MAIS; J'ai 3 table donc j'ai 3 entités:

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 mes tables. Si vous regardez la table Prim, vous pouvez voir la valeur float de la valeur Prim si j'écris une zone de texte et non une valeur float que ma transaction doit exécuter.

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

Comment puis je faire ça?

Réponse acceptée

Lorsque vous appelez SaveChanges , Entity Framework effectuera ces opérations en une seule transaction.

Lorsque vous utilisez la classe TransactionScope , vous dites "Je veux que ce qui est exécuté dans ce bloc soit encapsulé dans une transaction plus grande", ce que vous faites effectivement.

Lorsque vous appelez Complete sur TransactionScope , vous effectuez la validation de toutes les opérations encapsulées dans la transaction définie par TransactionScope .


Réponse populaire

SaveChanges fonctionne dans une transaction. SaveChanges annule cette transaction et lève une exception si aucun des objets ObjectStateEntry ne peut être conservé

de la documentation



Related

Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow