NHibernate: Невозможно зафиксировать вторую команду, когда в первой команде возникает ошибка - PullRequest
0 голосов
/ 12 апреля 2019

Я новичок в NHibernate. Я использую транзакцию для фиксации моих данных. Если произойдет ошибка, я открою новую транзакцию и вставлю данные об ошибке в базу данных. Это не работа. Пример: я фиксирую mydata, ошибка1 . Я откат транзакции и начать новую транзакцию, чтобы сохранить журнал ошибок. Когда я фиксирую журнал ошибок в базе данных, он все равно выбрасывает error1 .

Вот мой код:

    using (ITransaction transaction = _session.BeginTransaction())
    {
        try
        {
             var inserted = _session.Save(mydata);
             // first commit
             transaction.Commit();

        }
        catch (Exception ex)
        {
             // "Cannot insert duplicate key row in object" error occurs.
             transaction.Rollback();
             using (ITransaction errTransaction = _session.BeginTransaction())
             {
                 try
                 {
                     ErrorLogs errorLog = new ErrorLogs();                     
                     errorLog.ErrorMessage = ex.Message;                     
                     _session.Save(errorLog);

                     // second commit
                     errTransaction.Commit(); // it's not work
                     // When I commit, previous error ("Cannot insert duplicate...") occurs again.
                  }
                  catch (Exception ex2)
                  {    
                       throw ex2;
                  }
             }
             throw ex;           
         }
    }

Я использую Sql Profiler для просмотра сгенерированного TSQL. При первом коммите вставка моего оператора данных была выполнена. При втором коммите вставка оператора журнала ошибок была выполнена И вставка моей инструкции данных была выполнена снова. Пожалуйста, помогите мне объяснить, почему это происходит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...