Entity Framework :Using Transaction Scope 如何检查 DbContext 是不是有事务?
Posted
技术标签:
【中文标题】Entity Framework :Using Transaction Scope 如何检查 DbContext 是不是有事务?【英文标题】:Entity Framework :Using Transaction Scope how to check whether DbContext has transaction?Entity Framework :Using Transaction Scope 如何检查 DbContext 是否有事务? 【发布时间】:2018-05-09 21:18:14 【问题描述】:如前所述here
如果我们使用 Database.BeginTransaction()
开始事务,则使用 Entity Framework 6
我们可以使用以下语句检查上下文是否有事务:
var transaction = db.Database.CurrentTransaction;
不幸的是,如果我们使用TrasctionScope,这种方式将不起作用 开始交易:
var transactionScope = new TransactionScope();
我只是想知道当我使用TrasctionScope 时是否有任何方法可以检查上下文是否有事务?
【问题讨论】:
是的,确定 Transaction.Current。 感谢@Evk 的回复,其实我已经试过了,效果很好,非常感谢。 【参考方案1】:使用实体框架 6,您可以通过两种方式使用事务:
第一种方式,使用Database.BeginTransaction()
方法:
using (var context = new Context())
using (var dbContextTransaction = context.Database.BeginTransaction())
try
//Some EF Statments
Context.SaveChanges();
dbContextTransaction.Commit();
catch (Exception)
dbContextTransaction.Rollback();
第二种方式,使用TransactionScope:
using (var scope = new TransactionScope())
//Some EF Statments
Context.SaveChanges();
scope.Complete();
如果您使用第一种方式,您可以使用语句获取事务实例:
`var transaction = context.Database.CurrentTransaction;`
另一方面,如果您使用 TrasctionScope 开始交易,您必须使用:
var transaction = System.Transactions.Transaction.Current;
获取事务实例或检查上下文是否有事务
【讨论】:
以上是关于Entity Framework :Using Transaction Scope 如何检查 DbContext 是不是有事务?的主要内容,如果未能解决你的问题,请参考以下文章
Entity Framework :Using Transaction Scope 如何检查 DbContext 是不是有事务?
Query Using Entity Framework Error with Database Table name Error
如何在 ASP.NET Core Razor Pages 项目的 _layout.cshtml 文件中使用 Razor Page Using Entity Framework 作为部分视图?