Fla*_*air 77 c# entity-framework transactions transactionscope entity-framework-6
System.Transactions.TransactionScope和EF6有什么区别Database.BeginTransaction?
有人可以给出一个小例子,或者只是解释哪一个有明显区别?
PS:在我的项目中,我使用的是EF6.我已经阅读了文档,但它没有多大帮助.还查看了这些示例,但它们正在使用SqlConnection.BeginTransaction,现在MS已经Database.BeginTransaction在EF6中引入了这个新功能.
Fla*_*air 87
我在Entity Framework 6的文档中找到了答案:
随着EF6的推出,Microsoft建议使用新的API方法:Database.BeginTransaction()和Database.UseTransaction().尽管System.Transactions.TransactionScope仍然得到很好的支持,但大多数EF6用户不再需要它.
虽然Database.BeginTransaction()仅用于与数据库相关的操作事务,System.Transactions.TransactionScope但除此之外,"普通C#代码"也可以是事务性的.
因此,Database.BeginTransaction()在EF6中的事务中只使用db相关操作,否则System.Transactions.TransactionScope用于在事务中将db操作和C#代码混合在一起.
对于那些仍然喜欢这种TransactionScope方法的人,建议他们检查一下它的局限性,特别是在云场景中(云场景不支持分布式事务).
更多信息可以在这里找到
Bor*_*ode 10
公认的流行答案具有误导性。这两个Database.BeginTransaction()和System.Transactions.TransactionScope是DB操作。
using scope = new TransactionScope和结束scope.Complete();来包装所有事务操作以进行提交。sqlCommand.Transaction = sqlTxn;和显式设置事务context.Database.UseTransaction(sqlTxn);MSDN 确实声明,使用新的 Database.BeginTransaction() 和 Database.UseTransaction() API,大多数用户不再需要 TransactionScope 方法。
TransactionScope 的缺点:
TransactionScope 的优点:
基于这篇 MSDN 文章。
| 归档时间: |
|
| 查看次数: |
25381 次 |
| 最近记录: |