簡體   English   中英

實體框架如何處理交易?

[英]How does Entity Framework handle transactions?

當您在上下文中調用SaveChanges時,Entity Framework是否使用事務? 有沒有辦法完全關閉交易,或讓某個實體選擇退出交易?

AdventureWorksEntities db = new AdventureWorksEntities();

Product p1 = new Product();
// ...

Product p2 = new Product();
// set invalid data

db.Products.AddObject(p1);
db.Products.AddObject(p2);

// what happens when I call this - does it roll back everything?
// can i tell p2 not to participate in the transaction?
db.SaveChanges();

是的 ,EF4將創建一個新的交易(如果尚不存在)。 看到

http://msdn.microsoft.com/en-us/library/bb896325.aspx

當您調用SaveChanges時,如果存在當前事務,則實體框架將此事務用於針對數據源的操作。 否則,它會為操作創建一個新事務。 您可以使用EntityTransaction,Transaction或TransactionScope定義事務。

,沒有辦法從交易中豁免單個實體。

不確定你的第三個問題 - 關於你是否可以完全關閉交易,但我猜不是基於上面的摘錄。

我知道這不是你想聽到的答案,但是如果你想要P2保存而不管P1是否成功,你需要將P2保存到不同的對象上下文中。

關於關閉交易的最新問題。
嘗試使用Suppress TransactionScopeOption創建TransactionScope以完全關閉代碼塊的事務。 請查看此主題以獲取更多信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM