![](/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.