根據這篇文章http://social.technet.microsoft.com/wiki/contents/articles/handling-transactions-in-sql-azure.aspx實體框架的交易和SQL Azure的默認隔離級別
SQL Azure default database wide setting is to enable read committed
snapshot isolation (RCSI)
我是正確的假設:
A)下面的代碼默認爲序列化(覆蓋數據庫的默認)
using (TransactionScope transaction = new TransactionScope())
{
}
B)以下代碼默認爲ReadCommitted with Snapshot Isolation(而不僅僅是簡單的ReadCommitted)
TransactionOptions options = new TransactionOptions();
options.Timeout = TimeSpan.FromMinutes(1);
options.IsolationLevel = IsolationLevel.ReadCommitted;
using (TransactionScope transaction = new
TransactionScope(TransactionScopeOption.Required, options))
{
}
所以我需要使用具有快照的事務範圍來啓用SQL Azure上的讀取已提交快照。另外,任何在transactionscope之外的選擇 - 例如一個簡單的選擇objectcontext.employees.Select(e => e.FirstName) - 將是默認的數據庫隔離級別,SQL Azure中的讀取已提交快照? – user529265 2012-08-04 05:20:09
當然,當您在該事務之外執行選擇時,它將再次默認爲已提交。 – jeroenverh 2012-08-04 07:43:49