[英]Multiple TransactionScope problem
我想創建一個事務,在子事務中寫入一些數據,讀回數據,然后回滾事務。
using(var transaction = new TransactionScope())
{
using(var transaction = new TransactionScope())
{
// save data via LINQ / DataContext
transaction.Complete();
}
// Get back for assertions
var tempItem = // read data via LINQ / DataContext THROWS EXCEPTION
}
但是在閱讀時我得到“System.Transactions.TransactionException:該操作對於事務的狀態無效。”
我應該如何設置事務屬性以避免這種情況?
如果沒有完整的堆棧跟蹤,則無法調試此異常。 根據具體情況,它有不同的含義。 通常這意味着你正在做一些你不應該在事務中做的事情,但是沒有看到db調用或堆棧跟蹤所有人都可以做的就是猜測。 我所知道的一些常見原因(我認為這絕不是全面的)包括:
TransactionScope
訪問多個數據源(即不同的連接字符串)。 這會導致升級到分布式事務,如果您沒有運行DTC,它將失敗。 答案通常不是啟用DTC,而是清理事務或使用新的TransactionScope(TransactionOptions.RequiresNew)
包裝其他數據訪問TransactionScope(TransactionOptions.RequiresNew)
。 TransactionScope
未處理的異常。 我絕對不知道每一個可能的原因,但是如果你在你的代碼中發布完整的堆棧跟蹤和實際的db調用,我會看看並告訴你我是否看到了什么。
你有兩個嵌套的TransactionScope對象?
並沒有嘗試抓住阻止。
http://msdn.microsoft.com/en-us/library/system.transactions.transactionscope.aspx
我想你會發現具體的答案是你無法完成一件尚未開始的交易,它處於無效狀態。 你真的有LINQ評論所在的代碼嗎? 連接真的建立了嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.