vto*_*ola 3 msdtc transactions transactionscope sql-server-2008-r2 entity-framework-4.3
我有两个存储库指向相同的SQL Server 2008 R2(10.50.2550.0)数据库。一个存储库基于Entity Framework,另一个使用常规的SqlConnection。我需要执行涉及这两者的操作,因此我使用了a TransactionScope来使它们保持在同一事务中:
using (TransactionScope scope = new TransactionScope(TransactionScopeOption.RequiresNew, new TransactionOptions() { IsolationLevel = IsolationLevel.RepeatableRead }))
{
_repoA.DoStuff();
_repoB.DoStuff();
}
Run Code Online (Sandbox Code Playgroud)
由于我在两者中都使用相同的连接字符串:
"Data Source=(local);Initial Catalog=mydb;User Id=myid;Password=mypass;Asynchronous Processing=true"
Run Code Online (Sandbox Code Playgroud)
我期望SQL Server 2008 R2可以使用多个连接而无需扩展。不幸的是,我得到一个例外的说法:
发生System.Data.SqlClient.SqlException Message = MSDTC在服务器'MyComputer'上不可用。Source = .Net SqlClient数据提供程序
ErrorCode = -2146232060类= 16 LineNumber = 1 Number = 8501
Procedure =“” Server =(local)State = 2 StackTrace:位于System.Data.SqlClient.SqlConnection.OnError(SqlException异常,布尔值BreakConnection )
可能是什么问题呢?
干杯。
好吧,我找到了原因。实体框架将我的连接字符串修改为:
"Data Source=(local);Initial Catalog=mydb;User Id=myid;Password=mypass;Asynchronous Processing=true;Application Name=EntityFrameworkMUE"
Run Code Online (Sandbox Code Playgroud)
这就是将其提升为MSDTC的原因!
为了避免这种情况,我在连接字符串中设置了自己的“应用程序名称”,现在可以正常使用。
干杯。
| 归档时间: |
|
| 查看次数: |
1684 次 |
| 最近记录: |