Nhibernate中的连接超时时事务回滚引发异常的处理方法
最近在做一個短信項目,采用的nhibernate+sqlserver。因為數據量大,所以采用多線程的方式。有時會觸發超時。當超時時事務再回滾也會觸發異常nhibernate Transaction not connected, or was disconnected,所以在回滾時再加一個trycatch語句,當然這不是最好的解決方法,需日后完善。代碼如下 :
?
public IList GetEntities(string strHQL)
??????? {
??????????? IList lst;
??????????? ISession session=null;
??????????? ITransaction transaction=null;
??????????? try
??????????? {
???????????????? session= SessionFactory.OpenSession(_AssemblyName);
???????????????? transaction= session.BeginTransaction();
??????????????? lst = session.CreateQuery(strHQL).List();
??????????????? transaction.Commit();
??????????????? //session.Close();
??????????????? return lst;
??????????? }
??????????? catch (Exception e)
??????????? {
??????????????? //bool b = transaction.WasRolledBack;
??????????????? //if(!session.IsConnected||!session.IsOpen)
??????????????? //{
??????????????? //??? session.Reconnect();
??????????????? //}
??????????????? //if (session!=null&&session.Connection.State!=ConnectionState&&transaction != null && transaction.IsActive)
??????????????? //??? transaction.Rollback();
??????????????? //bool b = session.IsConnected;
??????????????? //bool b1 = session.IsOpen;
??????????????? try
??????????????? {
??????????????????? if ( transaction != null && transaction.IsActive)
??????????????????????? transaction.Rollback();
??????????????? }
??????????????? catch (Exception e1)
??????????????? {
???????????????????
?????????????????? // throw;
??????????????? }
??????????????? return null;
??????????? }
??????????? finally
??????????? {
??????????????? if(session!=null)
??????????????????? session.Close();
??????????? }
??????? }
?
總結
以上是生活随笔為你收集整理的Nhibernate中的连接超时时事务回滚引发异常的处理方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 这几天整理的 飞秋官方下载
- 下一篇: 又不能起床python好学吗