![](/img/trans.png)
[英]Does Entity Framework handle transaction by default on ExecuteFunction while calling transactions?
[英]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.