Database.BeginTransaction与Transactions.TransactionScope

System.Transactions.TransactionScope和EF6的Database.BeginTransaction什么区别?

有人可以举一个小例子,或只是解释清楚使用哪一个?

PS:在我的项目中,我正在使用EF6。 我已经阅读了文档,但没有多大帮助。 还查了一些例子,但是他们使用的是SqlConnection.BeginTransaction ,现在MS已经在EF6中引入了这个新的Database.BeginTransaction

我在Entity Framework 6的文档中find了答案:

随着EF6的推出,Microsoftbuild议使用新的API方法: Database.BeginTransaction()Database.UseTransaction() 。 尽pipeSystem.Transactions.TransactionScope仍然得到很好的支持,但对于EF6的大多数用户来说,这已经不再需要了。

虽然Database.BeginTransaction()仅用于与数据库相关的操作事务,但除此之外,还可以使“纯C#代码”也是事务性的。

因此,使用Database.BeginTransaction()在EF6中的事务中只做与db相关的操作,否则使用System.Transactions.TransactionScope将db操作和C#代码混合在一个事务中。

对于那些仍然喜欢使用TransactionScope方法的用户,build议他们检查自己的限制,尤其是在云scheme(云scheme不支持分布式事务)方面。

更多信息可以在这里find