![](/img/trans.png)
[英]Entity Framework 6 and Unit Of Work… Where, When? Is it like transactions in 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.