Database.BeginTransaction vs Transactions.TransactionScope [英] Database.BeginTransaction vs Transactions.TransactionScope

查看:271
本文介绍了Database.BeginTransaction vs Transactions.TransactionScope的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

System.Transactions.TransactionScope 和EF6的 Database.BeginTransaction

有人可以给出一个小例子,或者只是说明哪一个使用明确的区别?

Could someone give a small example or just explain which one to use when with a clear difference?

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

P.S: In my project, I'm using EF6. I've already read the documentation but it didn't help much. Also looked up the examples but they are rather using SqlConnection.BeginTransaction and now MS has introduced this new Database.BeginTransaction in EF6.

推荐答案

我在Entity Framework 6的文档中找到答案:

I found out the answer in Entity Framework 6's documentation:

随着EF6的引入,Microsoft建议使用新的API方法: Database.BeginTransaction() Database.UseTransaction() System.Transactions.TransactionScope 只是编写事务代码的旧样式。

With the introduction of EF6, Microsoft recommends to use new API methods: Database.BeginTransaction() and Database.UseTransaction(). System.Transactions.TransactionScope is just old style of writing transactional code.

但是数据库.BeginTransaction()仅用于数据库相关的操作事务,而 System.Transactions.TransactionScope 使得可能的简单C#代码也是事务性的。

But Database.BeginTransaction() is used only for database related operations transaction, whereas System.Transactions.TransactionScope makes the possible 'plain C# code' also transactional.

因此,使用 Database.BeginTransaction()在EF6的交易中只执行数据库相关操作,否则使用 System.Transactions.TransactionScope 用于在事务中混合数据库操作和C#代码。

Hence, use Database.BeginTransaction() where ever doing only db related operations in a transaction in EF6 otherwise use System.Transactions.TransactionScope for mixing db operations and C# code together in a transaction.

可以找到更多信息此处

这篇关于Database.BeginTransaction vs Transactions.TransactionScope的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆