Знаете ли вы, как осуществлять транзакции в замке ActiveRecord?
-
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 внутри и внутри него областью транзакции, поэтому, когда включал все это в область транзакции, он сохранялся в базы данных, поэтому, когда я выдал исключение, все уже было сохранено, я думаю, что это все.
В общем, спасибо за помощь.