对于LINQ,我使用TransactionScope来处理事务。当我执行查询时,我得到一个例外。
底层连接无法打开。
并且内部例外是关于DTC的。我在网上看到,我必须在服务器上启用一些服务。但我不想这样做。如何在不启用DTC的情况下使用transcactions。我的代码是这样的
public void function1()
{
using(TransactionScope t = new TransactionScope())
{
RunSomeSelectQueries();
RunSomeInsertQueries();
RunSomeUpdate Queries();
t.Complete();
}
}
提前致谢。
答案 0 :(得分:1)
你的tx处理存在一个严重的问题,它将把不同的负载推到不同的水平。
原因如下:
和
这通常是一个"嘿,我只是使用交易"反模式。
正确地说,您应该确保只创建一个数据库连接,除非您需要多个数据库连接(例如涉及多个数据库),以便事务范围不会因为有多个资源而转移到DTC。
显然,如果需要,你也应该正确配置DTC,但是再次:在这种情况下,真正的问题是你滥用事务范围强制DTC传播,而实际上并不需要。