同时使用NHibernate和Dapper,如果使用NHibernate开启事务,中间如果使用到Dapper的话,会报异常,原因是是Dapper使用事务时需要提供ado.net的IDbTransaction接口实例,NHibernate的ITransaction接口无法获取IDbTransaction的实例,也就无法初始化Dapper的事务了。此时将Dapper放在NHibernate的事务中执行就会报错。
解决的方式是使用NHibernate中ISession接口的CreateSQLQuery方法执行SQL语句。