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