【发布时间】:2011-12-28 10:33:53
【问题描述】:
有一个实体 Effort 具有属性 List 和属性 AdType
我们有几个 adTypes 枚举对象和 specialLists 枚举对象来选择 IList<Effort>
我是这样做的:
return NHibernateSession.QueryOver<Effort>()
.JoinQueryOver(effort => effort.AdType)
.WhereRestrictionOn(adType => adType.Id)
.IsIn(adTypes.Select(adt => (long)adt).ToList())
.Clone()
.JoinQueryOver(effort => effort.List)
.WhereRestrictionOn(list => list.Id)
.IsIn(specialLists.Select(sl => (long)sl).ToList())
.List<Effort>();
如您所见,我使用了一个没有任何描述的奇怪 Clone() 方法。效果很好。
您以何种方式使用 QueryOver 进行此类查询?
【问题讨论】:
-
我很好奇,如果省略克隆会发生什么,以及向数据库触发什么 SQL?
-
如果没有 Clone(),它将不会尝试执行以下 Join to Effort。它将尝试对 AdType 执行此操作。所以不会有 .JoinQueryOver(effort => effort.List) 它将是 .JoinQueryOver(adType => adType.....)
标签: nhibernate queryover