操作NHibernate进行多事务并发处理的一些小经验

今天在做项目的时候,遇到了一些事务处理上的问题。在MSN群里咨询了DDL这些高手,结合NHB的文档看了看。写了一个小Demo,但是问题还是有不少,还需要进一步改善。。。

public void Add(Test t, string query)
  
{
   ISessionFactoryImplementor sf 
= factor as ISessionFactoryImplementor;
   conn 
= sf.OpenConnection();
            ITransaction nTran 
= null;
   
try
   
{
    
    
// 第一个Session
    session1 = factor.OpenSession(conn);

    nTran 
= session1.BeginTransaction();
    
    session1.Save(t);
    session1.Flush();
    session1.Close();

    
    
// 执行Sql语句
    IDbCommand com = sf.ConnectionProvider.Driver.CreateCommand();
    com.CommandText 
= query;
    com.CommandType 
= CommandType.Text;
    nTran.Enlist(com);
    com.Connection 
= conn;
    com.ExecuteNonQuery();

    IDbTransaction tran 
= com.Transaction;

    tran.Commit();
    
   }

   
catch(Exception ex)
   
{
    nTran.Rollback();
    
throw ex;
   }

   
finally
   
{
    session1.Close();
   }

  }




这里无法同时执行两个Session里方法。

posted @ 2006-11-09 14:34  冰隼  阅读(1553)  评论(2编辑  收藏  举报