我使用名为ECO的对象持久性框架来将数据更新到SQL Server。我注意到,如果我创建一个TransactionScope,然后在我的第一个事务提交之后但在第二个提交之前故意抛出异常,则第一个数据库被更新而第二个数据库没有更新。
我认为只要在主数据库上运行分布式事务协调器,我就必须围绕众多更新创建TransactionScope吗?
任何人都可以想到为什么这会允许更新第一个数据库而不是第二个数据库的情况?
答案 0 :(得分:1)
知道了!
ECO支持以下数据库......
我记得今天早上其中一些不支持连接池,因此在抽象的PersistenceMapper类中,ECO已经实现了自己的连接池。这就是发生的事情
因此,连接不会在当前的分布式事务中登记。考虑到SqlConnection有自己的池,可以将PersistenceMapperSqlServer.MaxPoolSize设置为ZERO。
现在它使用SqlConnection组件来处理Connections的创建/处理,不仅该组件汇集连接,而且它也正确地处理分布式事务!
我写信给开发人员让他们知道他们应该将这个属性标记为过时。