使用隐式事务(TransactionScope)比显式事务(SQLTransaction)有什么好处?
我花了一些时间来研究这个,并且有很多网站解释了两者之间的差异,我明白这一点,例如这一个:http://sqlserverpedia.com/wiki/Transaction_Overview,这一个:named explicit & implicit transactions。我理解交易的属性,即ACID。我还查看了MSDN上的文档。
我认为隐式事务更灵活,更易于使用(因为回滚是为您完成的,并且事务不依赖于特定连接)。我相信明确的交易会给你更多控制权,例如什么时候回滚。我想确认:a)我所说的是否真实,b)是否有任何标准用于决定是否使用隐式或显式交易。
在MSDN上,它说:“强烈建议您使用更容易的隐式模型进行开发”
答案 0 :(得分:1)
显式交易已成为过去。除非你有非常好的理由,否则不要使用它们,我想不出任何理由。 TransactionScope
是实现目标的方法。
不要担心DTC,TransactionScope
只有在需要协调两个资源时才能使用DTC。如果您只访问一个数据库,TransactionScope
将与显式事务一样快。
答案 1 :(得分:0)
我建议尽可能避免使用MSDTC,除非你有排除故障,在上面编写详尽的故障排除指南,并向软件用户写下有关如何配置它的详尽说明。例如,用户需要知道如何设置其身份验证,如何确保DTC服务正在运行以确保远程计算机可以进行通信,如何使用FQDN配置SQL以进行跨域事务处理等等。这只是一个问题。我,多年。慢慢地赢得了战争,把它从系统中删除。换句话说,是的。如果您想在未来十年内保证问题,请继续使用。恕我直言,它不是一个企业级工具。根本没有任何自动化的东西。