Я создал следующее, Располагают метод для моей Единицы работы, которая по существу переносит активную сессию NH и транзакцию (набор транзакции, столь же переменный после открытия относительно не быть замененным, если сессия NH получает новую транзакцию после ошибки),
public void Dispose()
{
Func<ITransaction,bool> transactionStateOkayFunc =
trans => trans != null && trans.IsActive && !trans.WasRolledBack;
try {
if(transactionStateOkayFunc(this.transaction))
{
if (HasErrored)
{
transaction.Rollback();
}
else
{
try
{
transaction.Commit();
} catch (Exception)
{
if(transactionStateOkayFunc(transaction)) transaction.Rollback();
throw;
}
}
}
} finally
{
if(transaction != null) transaction.Dispose();
if(session.IsOpen) session.Close();
}
Я не могу сдержать чувство, что код немного чрезмерно увеличен в размере, будете, транзакция автоматически откатывать является дискретной Фиксацией сбои в случае невложенных транзакций?
Будет Фиксировать или Откат автоматически Dipose транзакция? Если не будет Сессия. Близко () автоматически располагают связанную транзакцию?