近来在研究NHibernate。在实际应用中可能会遇到NHibernate操作数据库和手工Sql一起执行的情况。在百度里搜索了一下,有一些代码,但过于复杂。自己研究出了一种方法,测试通过。
ITransaction trans
=
Session.BeginTransaction();
code = this .SelectCode(codeType);
code.CODE_CurrentCode += 1 ;
Session.Update(code);
Session.Flush();
// usage session's connection
IDbCommand cmd = Session.Connection.CreateCommand();
cmd.CommandText = " UPDATE PBCODE SET CODE_Attribute = '1' " ;
cmd.CommandType = CommandType.Text;
trans.Enlist(cmd);
cmd.Prepare();
cmd.ExecuteNonQuery();
// end
trans.Commit();
code = this .SelectCode(codeType);
code.CODE_CurrentCode += 1 ;
Session.Update(code);
Session.Flush();
// usage session's connection
IDbCommand cmd = Session.Connection.CreateCommand();
cmd.CommandText = " UPDATE PBCODE SET CODE_Attribute = '1' " ;
cmd.CommandType = CommandType.Text;
trans.Enlist(cmd);
cmd.Prepare();
cmd.ExecuteNonQuery();
// end
trans.Commit();
trans.Enlist(cmd)方法,就是给cmd赋上事务。