VB.NET - 隐式和显式事务

时间:2013-01-10 07:48:14

标签: asp.net vb.net transactions

使用隐式事务(TransactionScope)比显式事务(SQLTransaction)有什么好处?

我花了一些时间来研究这个,并且有很多网站解释了两者之间的差异,我明白这一点,例如这一个:http://sqlserverpedia.com/wiki/Transaction_Overview,这一个:named explicit & implicit transactions。我理解交易的属性,即ACID。我还查看了MSDN上的文档。

我认为隐式事务更灵活,更易于使用(因为回滚是为您完成的,并且事务不依赖于特定连接)。我相信明确的交易会给你更多控制权,例如什么时候回滚。我想确认:a)我所说的是否真实,b)是否有任何标准用于决定是否使用隐式或显式交易。

在MSDN上,它说:“强烈建议您使用更容易的隐式模型进行开发”

2 个答案:

答案 0 :(得分:1)

显式交易已成为过去。除非你有非常好的理由,否则不要使用它们,我想不出任何理由。 TransactionScope是实现目标的方法。

不要担心DTC,TransactionScope只有在需要协调两个资源时才能使用DTC。如果您只访问一个数据库,TransactionScope将与显式事务一样快。

答案 1 :(得分:0)

我建议尽可能避免使用MSDTC,除非你有排除故障,在上面编写详尽的故障排除指南,并向软件用户写下有关如何配置它的详尽说明。例如,用户需要知道如何设置其身份验证,如何确保DTC服务正在运行以确保远程计算机可以进行通信,如何使用FQDN配置SQL以进行跨域事务处理等等。这只是一个问题。我,多年。慢慢地赢得了战争,把它从系统中删除。换句话说,是的。如果您想在未来十年内保证问题,请继续使用。恕我直言,它不是一个企业级工具。根本没有任何自动化的东西。