2009-10-01 61 views
1

我认为Framework 2.0中的System.Transaction类是一个很好的工具,设计良好,旨在简化处理事务时的代码。有没有办法使用System.Transactions连接池?

但是,(big但是),不可能使用这些类与多个连接到相同的数据库(相同的连接字符串),而不促进分布式事务。

http://social.msdn.microsoft.com/forums/en-US/adodotnetdataproviders/thread/3ce488eb-55a8-4535-adc7-c5b29a1523b5/

Multiple Connections With Same Connection String Under A Single Transaction, Elevated Transaction?

微软正在努力解决这个问题,但同时¿人都知道一个可靠,简单的解决方法,以允许连接池机制,同时保持使用System.Transactions的能力?可能吗?

回答

1

不知道你想达到什么目的:

  • 如果连接到你需要分布式事务不同的数据库。
  • 如果连接进入相同的数据库,连接的打开可以在您的代码中进行控制。为什么你打开很多连接,你可以发送连接对象作为参数并重用它。

编辑:

我下面,这是最好的,因为需要打开和关闭连接的意见达成一致。但是如果连接是事务的一部分,它将不会返回到池中,在这种情况下,您可以尝试重用它。

+0

你说得对,我可以用一个连接。但是我的商业类与“连接池模式”一起工作。也就是说,他们“按需”打开连接,.NET Framework ADO类管理一个保持打开状态的内部连接池。这种机制被广泛使用并具有一些优点。 我想使用System.Transactions,但不必更改太多的代码。 – 2009-10-01 11:56:28

+0

我已更新我的问题以澄清它。我在谈论同一个数据库。谢谢。 – 2009-10-01 12:04:17

+0

根据需要开放和关闭连接是最佳可伸缩性实践。底层的池会考虑实际资源是否被清理或重用。 – 2009-10-01 12:06:26

相关问题