C# 4.0 C#,Linq2Sql,TransactionScope,“;交易已中止。”;,msdtc,SQLServer2005

C# 4.0 C#,Linq2Sql,TransactionScope,“;交易已中止。”;,msdtc,SQLServer2005,c#-4.0,C# 4.0,我们在.NET 4项目中遇到TransactionScope问题 我们已经将DAL划分为多个域,也就是说,我们有不同的Linq2Sql数据上下文指向同一个数据库 当在同一TransactionScope中,我们在多个DataContext上插入/更新时,会立即在本地和服务器上弹出一个msdtc事务,然后它将在那里挂起1-2分钟(猜测超时),代码将继续运行,直到t.Complete()和后续的默示.Dispose将产生异常“事务已中止” 我们已经在本地和服务器上配置了msdtc,以允许所有、无身份

我们在.NET 4项目中遇到TransactionScope问题

我们已经将DAL划分为多个域,也就是说,我们有不同的Linq2Sql数据上下文指向同一个数据库

当在同一TransactionScope中,我们在多个DataContext上插入/更新时,会立即在本地和服务器上弹出一个msdtc事务,然后它将在那里挂起1-2分钟(猜测超时),代码将继续运行,直到t.Complete()和后续的默示.Dispose将产生异常“事务已中止”

我们已经在本地和服务器上配置了msdtc,以允许所有、无身份验证、完整跟踪级别,但dtctrace.log中仍然没有相关信息

我想,当启动多个数据库连接时(即使是与同一个数据库连接),msdtc启动是一个标准过程,但为什么超时呢?操作没有冲突,我们的域中不可能出现死锁


通过谷歌搜索和广泛测试,希望在这里获得一些经验丰富的经验:)

使用SQL2005,任何跨越多个连接的事务都将升级到DTC。使用SQL2008,具有相同连接字符串的多个连接可以参与同一事务,而无需DTC。对于您选择的体系结构,如果可以的话,我强烈建议升级到SQL2008。DTC可以是正常工作的画图。

为了避免这种情况,我们使用了单个datacontext。谢谢你的回答。