【发布时间】:2015-02-25 20:14:56
【问题描述】:
我有以下物品:
Parent
public virtual Guid Id { get; set; }
public virtual DateTime TimeStamp { get; set; }
public virtual IList<Child> Childs { get; set; }
Child
public virtual Guid Id { get; set; }
public virtual string Name { get; set; }
我使用 Fluent 将一对多映射如下:
.Override<Parent>(obj =>obj.HasMany(x => x.Childs)
.Cascade.All()
.Not.Inverse()
.Not.KeyNullable()
.Not.KeyUpdate())
我需要在日期之间按时间戳顺序联系所有有孩子的父母。
我正在尝试按以下方式进行操作(maxCapacity 为 int):
QueryOver<Parent>().Where(x => x.TimeStamp > from)
.And(x => x.TimeStamp < to).OrderBy(x => x.TimeStamp).Desc
.Left.JoinQueryOver<Child>(x => x.Childs)
.TransformUsing(new DistinctRootEntityResultTransformer())
.Take(maxCapacity).List();
结果不是我所期望的,因为 Take(maxCapacity) 不在父结果上,而是在包括父和子的总查询结果上。
如何获取最新的 X 已经转换的 Parent 行?
谢谢。
【问题讨论】:
标签: nhibernate fluent-nhibernate left-join queryover