Я использую SessionFactory.GetCurrentSession (), чтобы получить сессию. Согласно инструкции, если транзакция зафиксирована или откатана, сеанс автоматически закроется. Но в следующем тестовом коде сеанс остается открытым.
ISession session = NHibernateHelper.GetCurrentSession();
using (ITransaction tx = hSession.BeginTransaction())
{
try
{
WalletRecord walletRecord = new WalletRecord();
//do something;
session.Save(walletRecord);
tx.Commit();
}
catch
{
tx.Rollback();
Console.WriteLine(session.IsOpen);
throw;
}
}
Это приводит к тому, что в случае возникновения исключения последующие вызовы выдают исключение, поскольку getCurrentSession возвращает тот же сеанс и основной кэш этот сеанс содержит ранее сгенерированные грязные данные.
Каковы оптимальные методы обработки исключений при использовании getCurrentSession?