0

如何使用 CreateCriteria 在 Nhibernate 中创建以下 SQL 语句:

SELECT distinct top 20 a.* from ActivityLog a left join WallPost w on a.ActivityLogId = w.ActivityLogId left join ItemStatus i on i.StatusId = w.ItemStatus

我总是倾向于从 sql 语句中返回的所有表中获取所有列,即使我将其映射到 ActivityLog 表,也会产生重复项。我也在进行分页,如下面的代码所示:

ICriteria crit = nhelper.NHibernateSession.CreateCriteria(typeof(Model.ActivityLog), "a").CreateAlias("a.WallPosts", "w",CriteriaSpecification.LeftJoin) .CreateAlias("w.ItemStatus", "i", CriteriaSpecification.LeftJoin) .SetMaxResults(pageSize).SetFirstResult(startRow).AddOrder(Order.Desc("a.Date"));

谢谢

H

4

2 回答 2

0

听起来您在映射文件中将延迟加载设置为 false,这意味着所有关联和子集合也正在加载。你能证实吗?

于 2012-07-05T13:21:23.707 回答
0

您问“如何使用 NHibernate CreateQuery选择一个表”(HQL)。在这种情况下,您可以使用 select 选择要获取的内容。

在您的文本中,您使用的是标准。AFAIK,您无法直接控制要阅读的列。但是,如果您为联接创建 DetachedCriteria,则不会获取该值。

于 2012-07-05T13:23:56.913 回答