哪些例外会导致关闭Nhibernate会话?

时间:2011-06-07 14:13:35

标签: nhibernate

我正在阅读Nhibernate异常会导致无效的会话状态。所以,我的问题是我应该处理哪些异常并关闭并重新打开会话。而且,我应该重新加载所有实体吗?

我的场景 - 我正在我的演示者类中为表单打开一个会话。而且,我正在使用像

这样的交易


 using (ITransaction transaction = session.BeginTransaction())
            {
                foreach (var item in records)
                {
                    session.Delete(item);
                }
                transaction.Commit();
           }

so, should I do this?

using (ITransaction transaction = session.BeginTransaction())
            {
                foreach (var item in records)
                {
                    session.Delete(item);
                }
                try
               {
                transaction.Commit();
               }
             catch(Exception ex)
               {
                 rollback,
                session.dispose
                session = factor.opensession()
                }

           }

1 个答案:

答案 0 :(得分:0)

首先,我一直使用第二个选项。现在问题是,处理和打开一个新会话是practically painless所以我通常不介意“如果发生任何错误”。