如题,我现在有一个对象用nhibernat进行新增后想得到最新的ID号(ID号为自增长)的对象.想用SQL语执行,查了资料后知道了可以用session.Connection来把nhibernat转换成ADO.但这样好像不能把新增和查询做在同一个事务内.
注:我的事务是用session.BeginTransaction开始的.

解决方案 »

  1.   

    事务和数据库操作是没有关系的。
    就算你session.BeginTransaction了,只要你没有commit,事务就在同一个下的
    1。你可以用session.load<T>获得你插入的实体,自然有ID属性。不过前提是你要flash()一下
    2。你可以自己写SQL语句并new 出一个command,Nhibernate 支持外参command的,前提仍然是你要flash()缓存。
      

  2.   

    然后再commit(),这样就是在同一个事务了
      

  3.   

    老大,能不能给个例子,我试了好多方法就是没行,提示"  ----> System.InvalidOperationException : 如果分配给命令的连接位于本地挂起事务中,ExecuteNonQuery 要求命令拥有事务。命令的 Transaction 属性尚未初始化。"不管理是让用SQL的Conn来打开一个会话框还是用session.createCommand来执行一个SQL语句,都不能同在一个事务中来执行.