gpt4 book ai didi

TransactionScope 提升到 MSDTC 虽然我使用相同的连接字符串

转载 作者:行者123 更新时间:2023-12-04 04:35:47 24 4
gpt4 key购买 nike

我有两个存储库指向同一个 SQL Server 2008 R2 (10.50.2550.0) 数据库。一个存储库基于 Entity Framework ,另一个使用常规 SqlConnection。我需要执行一个涉及两者的操作,所以我使用了 TransactionScope将它们保留在同一事务中:

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 .
不幸的是,我得到一个异常(exception)说:

System.Data.SqlClient.SqlException occurred Message=MSDTC on server 'MyComputer' is unavailable. Source=.Net SqlClient Data Provider
ErrorCode=-2146232060 Class=16 LineNumber=1 Number=8501
Procedure="" Server=(local) State=2 StackTrace: at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)



可能是什么问题呢?

干杯。

最佳答案

好的,我找到了原因。 Entity Framework 正在将我的连接字符串修改为:

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

这导致了 MSDTC 的升级!

为了避免这种情况,我设置了自己的 "Application Name"在连接字符串中,它现在可以工作了。

干杯。

关于TransactionScope 提升到 MSDTC 虽然我使用相同的连接字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13398883/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com