从我正在阅读的内容来看,为了在.NET中使用TransactionScope,您需要运行Windows中的分布式事务处理协调器服务。我已将该服务关闭,我的应用似乎运行相同并回滚交易没问题。
我错过了什么吗? 它是如何工作的?我正在运行Windows 7并在VisualStudio 2010上运行webapp。
答案 0 :(得分:11)
更多现代版本的Windows在内核中有一个迷你DTC版本。它不是分布式的,而是使用相同的API - 但它只能处理每个事务范围的一个ressource。
TransactionScope在开始时使用它,然后在添加第二个资源时将事务“提升”到真正的DTC(在您的情况下资源是数据库连接)。因此,只要您的用例充足,就可以避免DTC的DISTRIBUTED部分的(高)开销,并且可以在没有服务运行的情况下工作。
有关内核事务管理器的更多信息,请访问http://en.wikipedia.org/wiki/Kernel_Transaction_Manager
MS补充说,因为NTFS得到了交易,它需要确保DTC是可用的。答案 1 :(得分:9)
只有当您有多个具有不同连接的交易时,MSDTC才会进入游戏
所以答案是:
这取决于!