我們使用企業庫進行數據訪問。使用企業庫時的鏡像和死鎖
我們的方法之一是對同一個表進行刪除和插入操作。這造成了僵局。
如果我們把這些放在一個事務範圍內,死鎖就不會再發生了。直覺上,它感覺應該是相反的。任何人都可以解釋爲什麼它像這樣?
我們使用企業庫進行數據訪問。使用企業庫時的鏡像和死鎖
我們的方法之一是對同一個表進行刪除和插入操作。這造成了僵局。
如果我們把這些放在一個事務範圍內,死鎖就不會再發生了。直覺上,它感覺應該是相反的。任何人都可以解釋爲什麼它像這樣?
事務範圍與TransactionOptions
IsolationLevel = IsolationLevel.ReadUncommitted
結合等同於WITH(NOLOCK)在T-SQL,所以如果該表沒有被鎖定的死鎖不會發生......
using (var scope = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions(){ IsolationLevel = IsolationLevel.ReadUncommitted }))
{
}
-1:'TransactionScope'的默認隔離級別是'Serializable'。請參閱文章[使用事務範圍實現隱式事務]中的設置TransactionScope隔離級別(http://msdn.microsoft.com/zh-cn/library/ms172152.aspx) – 2011-04-13 14:12:29
@RandyLevy,是,具有ReadUncommitted IsolationLevel的TransactionOptions必須也可以使用,更正答案。 – 2016-03-09 15:45:10
檢查['隔離Level'] (http://msdn.microsoft.com/en-us/library/system.transactions.isolationlevel.aspx)在yoru C#代碼以及['存儲過程'](http://msdn.microsoft.com/zh-cn/ -us/library/ms173763.aspx) – 2011-04-13 06:13:23