2008-12-27 63 views
2

当使用ado.net并在单个事务(使用System.Transactions.TransactionScope)内创建到MS SQL Server数据库的多个连接时,System.Transactions是否将事务从轻量级事务管理器提升到分布式事务协调器(内核在Vista上的事务协调器),即使连接字符串对于所有连接对象都是相同的?单个交易下具有相同连接字符串的多个连接,高位交易?

该文档在这种特定情况下有些模棱两可。它表示,如果在事务处理期间另一个连接对服务器打开,则事务将被提升,但并不表示它是否始终如此,或者只有连接字符串不同。如果连接字符串是相同的,它对提升事务没有任何意义,但如果是这样,它基本上使轻量级事务管理器完全无用,IMO。

回答

3

不幸的是,它在当前版本中总是提升交易。

正如你所说,使得TransactionScope比其他方式有用得多。我相信有计划在未来的版本中改变这一点。

+0

呃,这很糟糕。你有什么策略来规避这个“特征”?我唯一的猜测是在用户请求期间保持会话级别(不一定通过Session对象)连接对象打开,并延迟通过数据访问层的所有调用以使用它。我会开始另一个问题 – 2008-12-27 17:36:58