NHibernate事务中的本机SQL查询

时间:2013-11-30 13:11:58

标签: c# sql nhibernate transactionscope

短而甜蜜:

  1. 在我的应用程序中进行任何本机SQL查询之前,是否应始终刷新SessionScope

    我猜答案是肯定的,因为NHibernate实现了缓存,因此所做的更改仍然不在数据库中,因此查询会产生不一致的结果。

  2. 在NHibernate中,当前活动的事务在同一事务中进行这些查询的正确方法是什么?

    这很重要,因为我的业务逻辑可能会出现死锁。

  3. 关于这两个问题的进一步文件也将受到赞赏!

1 个答案:

答案 0 :(得分:1)

(我假设通过“刷新”你提到ISession.Flush()):

  1. 快速回答是:这取决于你的刷新模式,如果是你从不需要自己刷新会话,但如果是自动,NHibernate会在发出查询之前刷新。
  2. 使用NHibernate执行本机SQL查询有两种方法。一种是使用NHibernate自己的本机SQL支持,例如使用命名查询或ISession.CreateSQLQuery()。其他是使用NHibernate ITransaction.Enlist()。但是,我不确定使用Enlist()执行DbCommand是否会刷新会话。