/ / Entity Framework: Pomocou Transaction Scope ako zistiť, či má DbContext transakciu? - c #, entity-framework, transakcie, transakcie

Entity Framework: Pomocou Transaction Scope, ako skontrolovať, či má DbContext transakciu? - c #, entity-framework, transakcie, transakcie

Ako bolo spomenuté tu pomocou Entity Framework 6, ak začneme transakciu pomocou Database.BeginTransaction() môžeme skontrolovať, či kontext má transakciu pomocou tohto vyhlásenia:

var transaction = db.Database.CurrentTransaction;

Bohužiaľ tento spôsob nefunguje, ak sme používali TrasctionScope začať transakciu:

var transactionScope = new TransactionScope();

Len sa zaujímam, či existuje nejaký spôsob, ako skontrolovať, či má kontext transakciu, keď ju používam TrasctionScope ?

odpovede:

0 pre odpoveď č. 1

Pomocou rámca entity 6 môžete používať transakcie pomocou tahových spôsobov:

  • Použitím Database.BeginTransaction() ako v:

      using (var context = new Context())
    {
    using (var dbContextTransaction = context.Database.BeginTransaction())
    {
    try
    {
    //Some EF Statments
    
    Context.SaveChanges();
    dbContextTransaction.Commit();
    
    }
    catch (Exception)
    {
    dbContextTransaction.Rollback();
    }
    }
    
  • Druhý spôsob používania TransactionScope :

        using (var scope = new TransactionScope())
    {
    //Some EF Statments
    Context.SaveChanges();
    scope.Complete();
    }
    
  • ak ste prvý spôsob použitia, môžete získať inštanciu transakcie pomocou príkazu:

    var transaction = context.Database.CurrentTransaction;

  • Na druhej strane, ak začnete transakciu používať TrasctionScope, musíte použiť:

    var transaction = System.Transactions.Transaction.Current; získať inštanciu transakcie alebo skontrolovať, či kontext má transakciu alebo nie