【发布时间】:2012-01-18 12:18:26
【问题描述】:
我正在尝试使用查询来检索基于连接/子查询的实体集合,如下例所示:
var types = new List<ActivityType>{ActivityType.CommentMedia, ActivityType.KeepMedia};
return _sessionFactory.GetCurrentSession()
.QueryOver<Activity>()
.Where(a.Type.IsIn(types))
.WithSubquery.WhereExists(QueryOver.Of<Resource>()
.Where(k => k.MemberKey == userId)
.Where(k => k.ResourceKey == activity.ResourceId)
)
.Take(take)
.List();
换句话说,检索资源表中与用户和资源 ID 匹配的所有活动。
我会通过加入 Resource 或子查询在原始 sql 中执行此操作:
where a.ResourceId in (select resourceKey from resource where resource.memberkey = a.MemberId)
不知道如何在 nhibernate 中进行。有什么建议吗?
(我们不想使用映射,因为出于性能原因,我们希望保持 Activity 实体非常简单)
提前致谢
【问题讨论】:
-
是否需要为此使用QueryOver,或者HQL也是一种选择?
-
Query Over 会更好。在我看来,它应该是直截了当的。干杯
标签: nhibernate queryover