簡體   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