2017-11-26 2 views
1

Wie erwähnt here Entity Framework 6, wenn wir eine Transaktion mit Database.BeginTransaction() beginnen können wir prüfen, ob ein Zusammenhang eine Transaktion mit dieser Aussage hat:Entity Framework: Verwenden von Transaktionsbereich, um zu überprüfen, ob DbContext Transaktion hat?

var transaction = db.Database.CurrentTransaction; 

Leider ist diese Art und Weise nicht funktioniert, wenn wir gebraucht TrasctionScope zu beginnen Transaktion:

var transactionScope = new TransactionScope(); 

ich frage mich nur, wenn es eine Möglichkeit, ob ein Zusammenhang eine Transaktion hat zu prüfen ist, wenn ich verwende TrasctionScope?

+1

Ja sicher Transaction.Current. – Evk

+0

Vielen Dank für Ihre Antwort @Evk, Eigentlich habe ich es versucht und es hat richtig funktioniert, Vielen Dank. – Shadi

Antwort

0

Entity Framework Mit 6 Sie Transaktionen mit Schlepptau Art verwenden können:

  • Mit Database.BeginTransaction() Methode wie in:

    using (var context = new Context()) 
        { 
         using (var dbContextTransaction = context.Database.BeginTransaction()) 
         { 
          try 
          { 
           //Some EF Statments 
    
           Context.SaveChanges(); 
           dbContextTransaction.Commit(); 
    
          } 
          catch (Exception) 
          { 
           dbContextTransaction.Rollback(); 
          } 
         } 
    
  • Zweiter Weg mit TransactionScope:

    using (var scope = new TransactionScope()) 
        { 
         //Some EF Statments 
         Context.SaveChanges(); 
         scope.Complete(); 
        } 
    
  • Wenn Sie den ersten Weg benutzt haben, können Sie Transaktionen tätigen using-Anweisung Ionen Beispiel:

    var transaction = context.Database.CurrentTransaction;

  • Auf der anderen Seite, wenn Sie Transaktion mit TrasctionScope Sie beginnen zu verwenden:

    var transaction = System.Transactions.Transaction.Current; zu Transaktionsinstanz zu erhalten oder zu prüfen, ob ein Zusammenhang eine Transaktion hat oder nicht

Verwandte Themen