System.Transactions.TransactionScope
和ef6的Database.BeginTransaction
有什么不同?
有没有人可以举一个小例子,或者只是解释一下,当有明显的区别时,应该使用哪一个?
附言:在我的项目中,我使用的是EF6。我已经阅读了文档,但它没有太大帮助。我也查找了示例,但他们使用的是SqlConnection.BeginTransaction
,现在微软在EF6中引入了这个新的Database.BeginTransaction
。
发布于 2021-01-17 19:48:55
被接受和流行的答案是误导的。Database.BeginTransaction()
和System.Transactions.TransactionScope
都用于DB操作。
Database.BeginTransaction()和System.Transactions.TransactionScope之间的主要区别:
风格
using scope = new TransactionScope
和结束scope.Complete();
包装所有事务性操作。sqlCommand.Transaction = sqlTxn;
和context.Database.UseTransaction(sqlTxn);
显式设置事务
分布式事务
MSDN声明,有了新的Database.BeginTransaction()和Database.UseTransaction() API,大多数用户不再需要TransactionScope方法。
TransactionScope的优点和缺点:
TransactionScope的缺点:
TransactionScope的优势:
如果您与给定数据库建立了多个连接,或者在同一事务中将一个到一个数据库的连接与一个到另一个数据库的连接组合在一起(注意:您必须将
https://stackoverflow.com/questions/22382892
复制相似问题