我的数据库是 MS SQL。我想使用 ROW_NUMBER()
在 HQL 中。是否可以?如何?我知道
关于 Custom Functions
.但更喜欢一种不需要修改web.config的方式。
更新:
我的最终目标是删除表/实体中的所有记录,除了 HQL 的最后 n 条记录。我不喜欢将它们全部加载到内存中然后删除它们。
最佳答案
从 NH v2 开始,HQL 通过 IQuery.ExecuteUpdate()
支持删除和更新语句.您也可以尝试使用 IQuery.SetMaxResults()
和 IQuery.SetFirstResult()
(使用 ROW_NUMBER()
)以获得所需的效果。
编辑:
我对自己进行了试验,在 ExecuteUpdate() 的 sql 生成中忽略了 SetMaxResults 和 SetFirstResult,因此这将不起作用。
同样@下面的评论,HQL ExecuteUpdate(至少对于DELETE)并不一定意味着对象状态的内存加载。
关于nhibernate - 如何在 HQL 中使用 ROW_NUMBER()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5549953/