![](/img/trans.png)
[英]Rollback transaction with 2 DbContexts in Entity Framework. Use TransactionScope or TransactionBegin?
[英]Is a TransactionScope appropriate to include side effects in the Entity Framework transaction?
想象一下使用實體框架6進行的以下操作:
// operations on some entities
// send an email
// write to a file
db.SaveChanges();
如果是db.SaveChanges();
失敗,不應該發送電子郵件,也不應該寫入文件。 我是否正確理解我需要將所有代碼包裝在TransactionScope
才能實現此行為? 像這樣:
using(var transaction = new TransactionScope())
{
// operations on entities here
// send an email
// write to a file
db.SaveChanges();
transaction.Complete();
}
否,因為您有問題:
因此,通常來說,這種方法是有效的,但是您的兩種情況確實很糟糕。
在這種特殊情況下,一旦提交完成,我可能會使用通過SQL Broker(或MSMQ)控制的單獨排隊的業務事務來啟動其他兩個操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.