Знаете ли вы, как осуществлять транзакции в замке ActiveRecord?

StackOverflow https://stackoverflow.com/questions/38729

  •  09-06-2019
  •  | 
  •  

Вопрос

Я решил создать систему для клиента, используя Замок ActiveRecord , все шло хорошо, пока я не обнаружил, что транзакции, например, не работают;

               TransactionScope t = new TransactionScope();

               try
               {
                   member.Save();

                   //This is just to see transaction working
                   throw new Exception("Exception");  

                   foreach (qfh.Beneficiary b1 in l)
                   {
                       b1.Create();
                   }


               }
               catch (Exception ex)
               {

                   t.VoteRollBack();
                   MessageBox.Show(ex.Message);
               }
               finally
               {
                   t.Dispose();
               }

Но это не работает, я выкидываю исключение только для того, чтобы попытаться откатить транзакцию, но к своему удивлению я вижу, что первые [Save] записи в базу данных. Что происходит?

Я новичок в Касле и NHibernate, во-первых, я увидел, что это очень привлекательно, и я решил продолжить с ним и MySQL (я никогда не работал с этой БД), я попробовал ActiveWriter, и это показалось очень многообещающим, но после Я недолго и напряженно смотрю на эту проблему, и теперь чувствую, что застрял и потерял время. Это должно быть легко, но сейчас я чувствую себя раздраженным, потому что не могу найти достаточно информации, чтобы сделать эту тренировку, вы можете мне помочь?

Это было полезно?

Решение

Бен понял. Этот документ немного сбивает с толку. Обратитесь к последнему блоку. noreferrer "> на странице , " Вложенные транзакции " ;.

Другие советы

Вам нужно обернуть код в область видимости сеанса, например:

using(new SessionScope())
{
   a.Save();
   b.Save();
   c.Save();
}

Подробнее здесь .

Я наконец исправил, так получилось, что я поступил неправильно, я переопределил метод Save класса Member и сделал sessionScope внутри и внутри него областью транзакции, поэтому, когда включал все это в область транзакции, он сохранялся в базы данных, поэтому, когда я выдал исключение, все уже было сохранено, я думаю, что это все.

В общем, спасибо за помощь.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top