nhibernate - 如何在 HQL 中使用 ROW_NUMBER()?

标签 nhibernate hql row-number

我的数据库是 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/

相关文章:

WCF + NHibernate + ISession =?

c# - NHibernate 3.2 通过代码映射忽略我的 IUserType

SQL:固定行和行号计算

c# - Nhibernate 将 id=0 存储为 null

nhibernate - 对 nHibernate 的 ISession 和预加载的关注点分离感到困惑

hibernate - 准备好的语句、hibernate 和 HQL

hibernate - 如何为 OneToOne 生成 hql 查询

.net - NHibernate 控制台

gwt - 在GWT CellTable中添加行号列

sql - t-SQL 查找每个组的前 10 条记录