/ / Рамка на Entity: Използване на Обхват на транзакциите как да проверите дали DbContext има транзакция? - c #, рамката на обекта, транзакциите, transactioncope

Рамка на Entity: Използване на Обхват на транзакциите как да проверите дали DbContext има транзакция? - c #, рамката на обекта, транзакциите, transactioncope

Както е споменато тук използвайки Entity Framework 6, ако започнем да използваме транзакция Database.BeginTransaction() можем да проверим дали контекстът има транзакция, използваща това изречение:

var transaction = db.Database.CurrentTransaction;

За съжаление този начин не работи, ако използваме TrasctionScope да започнете транзакция:

var transactionScope = new TransactionScope();

Просто се чудя дали има някакъв начин да проверя дали контекстът има транзакция, когато използвам TrasctionScope ?

Отговори:

0 за отговор № 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; да получите инстанция за транзакция или да проверите дали контекстът има транзакция или не