使用NHibernate HQL时是否需要显式刷新

时间:2017-09-27 15:35:33

标签: c# nhibernate

{ "query": { "bool": { "must_not": [ { "match": { "city": "dallas" } }, { "match": { "city": "london" } }, { "match": { "city": "singapore" } }, { "match": { "city": "prague" } }, { "match": { "city": "ontario" } }, ........................................... ........................................... ........................................... ] } } } 会话中,我们是否需要在执行NHibernate语句之前调用Flush()

我相信HQL应该足够聪明,只要处理`HQL。

就可以刷新

例如,

NHibernate

1 个答案:

答案 0 :(得分:0)

在阅读数据时,如果您的FlushMode设置为Auto,这是默认设置,那么NH将尽力管理刷新,以便查询结果与当前的查询结果一致会话。

然而,当涉及到添加,更新和删除时,重要的是要明确。以下代码是规范示例:

 using (ISession session)
 using (var transaction = session.BeginTransaction())
 {
     var query = session.CreateQuery(
         $"DELETE FROM Table WHERE id = :id")
            .SetParameter("id", someId);

     query.ExecuteUpdate();

     transaction.Commit();
 }

提交事务会为您提供刷新,同时提供数据库一致性。

我必须通过说我很少使用HQL来回答这个问题,所以我的答案可能会遗漏与HQL及其行为特别相关的内容。