在{
"query": {
"bool": {
"must_not": [
{
"match": {
"city": "dallas"
}
},
{
"match": {
"city": "london"
}
},
{
"match": {
"city": "singapore"
}
},
{
"match": {
"city": "prague"
}
},
{
"match": {
"city": "ontario"
}
},
...........................................
...........................................
...........................................
]
}
}
}
会话中,我们是否需要在执行NHibernate
语句之前调用Flush()
?
我相信HQL
应该足够聪明,只要处理`HQL。
例如,
NHibernate
答案 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及其行为特别相关的内容。