繁体   English   中英

ADO.Net实体框架事务

[英]ADO.Net Entity Framework Transactions

我想问一下在ADO.Net Entity Framework(调用,回滚,提交)中使用事务的正确方法是什么? 我有这个代码,但这给了我一个例外

"Invalid operation. The connection is closed." 

(在此代码中NorthwindEntities继承“DBContext”)

NorthwindEntities context = new NorthwindEntities();
DbTransaction tran = context.Database.Connection.BeginTransaction();
var cust = context.Customers.FirstOrDefault(x => x.CustomerID == "BOLID");
cust.Country = "Nigeria";
context.SaveChanges();
tran.Rollback();

要在EF中提交 “事务”,只需调用context.SaveChanges()

在内部, SaveChanges打开一个连接,启动一个db事务,将所有挂起的更改(由上下文跟踪)推送到存储,提交事务并处置连接。 如果在保存更改期间出现任何错误,则会回滚db transaction。

回滚 “事务”,只需丢弃上下文实例。

通常,不需要对EF使用外部数据库事务。

请注意,我在引号中使用“事务”,因为EF上下文的更改跟踪器不等同于db事务。 当您对数据进行一些更改(按上下文跟踪)时,这些更改不会立即影响存储。 它们正在等待,直到您调用SaveChanges

EF使TransactionScope成为本机数据库事务的模拟。 TransactionScope适用于您的应用程序层,但行为与数据库事务类似,并由EF内部支持)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM