如何使用Entity Framework中的交易?我读了一些关于Stackoverflow的链接:
Using Transactions or SaveChanges(false) and AcceptAllChanges()?
但;我有3个表,所以我有3个实体:
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我的桌子.如果您看到Prim表,您可以看到Prim值float值,如果我写一个textBox不是float值,我的事务必须运行.
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; } }
我怎样才能做到这一点?
解决方法
当您拨打
SaveChanges
时,实体框架将在单个事务中执行这些操作.
当您使用TransactionScope
class时,您在说“我希望在这个块中运行的内容被封装在一个更大的事务中”,这的确是你所做的.
当您在TransactionScope上调用Complete
时,这是执行封装在TransactionScope定义的事务中的所有操作的执行.