近来在研究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赋上事务。