Entity Framework :使用Transaction Scope如何查看DbContext是否有事务?
Entity Framework :Using Transaction Scope how to check whether DbContext has transaction?
如前所述
使用 Entity Framework 6 如果我们使用 Database.BeginTransaction()
开始交易
我们可以使用以下语句检查上下文是否有事务:
var transaction = db.Database.CurrentTransaction;
不幸的是,如果我们使用TrasctionScope,这种方式就不起作用了
开始交易:
var transactionScope = new TransactionScope();
我只是想知道在我使用 TrasctionScope 时是否有任何方法可以检查上下文是否有事务?
使用entity framework 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;
获取交易实例或检查上下文是否有交易
如前所述Database.BeginTransaction()
开始交易
我们可以使用以下语句检查上下文是否有事务:
var transaction = db.Database.CurrentTransaction;
不幸的是,如果我们使用TrasctionScope,这种方式就不起作用了 开始交易:
var transactionScope = new TransactionScope();
我只是想知道在我使用 TrasctionScope 时是否有任何方法可以检查上下文是否有事务?
使用entity framework 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;
获取交易实例或检查上下文是否有交易