![]() |
1
2
在事务作用域内打开第二个ADO.Net连接时,两个连接都将升级为DTC。即使是同一数据库的新连接,也无所谓。数据库只读也与此无关,不可能与之有任何关系。首先,连接不是特定于数据库的,因为它们可以在打开后更改数据库。其次,只读数据库可以执行大量的写入操作(例如,可以调用readonlydb.dbo.myProcedure,在该过程中,我可以更新writeabledb.dbo.table)。 如果要避免DTC,则必须在两个访问层之间使用不同的事务作用域(即使用REQUIRE创建新的作用域)。
但我知道这是不太可能的,因为第二组读取通常取决于第一次转换/更新的结果。因此,在执行读取时,您最好将范围限制在最上面:
|