3

我有兩個存儲庫指向同一個SQL Server 2008 R2(10.50.2550.0)數據庫。一個存儲庫基於實體框架,另一個使用常規的SqlConnection。我需要執行,涉及到兩個操作,所以我使用了一個TransactionScope,讓他們在同一事務:TransactionScope提升爲MSDTC雖然我使用的連接字符串相同

using (TransactionScope scope = new TransactionScope(TransactionScopeOption.RequiresNew, new TransactionOptions() { IsolationLevel = IsolationLevel.RepeatableRead })) 
{ 
    _repoA.DoStuff(); 
    _repoB.DoStuff(); 
} 

由於我使用兩個相同的連接字符串:

"Data Source=(local);Initial Catalog=mydb;User Id=myid;Password=mypass;Asynchronous Processing=true" 

我期待那SQL Server 2008 R2 could use multiple connections without scalating。 不幸的是我得到一個異常說:發生消息= MSDTC

System.Data.SqlClient.SqlException服務器上 「我的電腦」是不可用的。源= .net SqlClient數據提供
錯誤碼= -2146232060類= 16 LineNumber上= 1總數= 8501
過程= 「」 服務器=(本地)狀態= 2堆棧跟蹤:在System.Data.SqlClient.SqlConnection.OnError ( SqlException異常,布爾breakConnection)

可能是什麼問題?

乾杯。

回答

3

好的,我找到了原因。實體框架正在修改我的連接字符串爲:

"Data Source=(local);Initial Catalog=mydb;User Id=myid;Password=mypass;Asynchronous Processing=true;Application Name=EntityFrameworkMUE" 

而這正在導致升級到MSDTC!

爲了避免這種情況,我在連接字符串中設置了自己的"Application Name",現在它可以工作。

乾杯。

相關問題