(NHibernate)如何在获取时筛选集合
要求: 我正试图查询客户名单。 每个客户都可以包含联系人列表。 只应返回活动联系人 代码:(NHibernate)如何在获取时筛选集合,nhibernate,fetch,queryover,Nhibernate,Fetch,Queryover,要求: 我正试图查询客户名单。 每个客户都可以包含联系人列表。 只应返回活动联系人 代码: Session.QueryOver<Customer>() .Fetch(x => x.Contacts.Where(c => c.Active)) .Eager .TransformUsing(new DistinctRootEntityResultTransformer()) .Future() .AsQueryable(); Sess
Session.QueryOver<Customer>()
.Fetch(x => x.Contacts.Where(c => c.Active))
.Eager
.TransformUsing(new DistinctRootEntityResultTransformer())
.Future()
.AsQueryable();
Session.QueryOver()
.Fetch(x=>x.Contacts.Where(c=>c.Active))
渴望的
.TransformUsing(新的DistinctRootEntityResultTransformer())
.Future()
.AsQueryable();
错误:
表达式x.Contacts.Where(c=>c.Active)中无法识别的方法调用
那么,我如何才能只过滤活动联系人呢?您不能,因为这样做会在数据库和域模型之间造成不匹配。如果您能够做到这一点,则在刷新会话时将删除非活动联系人。有两个很好的选择:
IEnumerable
上创建一个可返回活动联系人的扩展方法。这允许您轻松筛选任何一组联系人,以便仅显示活动联系人也可能是一个选择,但我没有与他们的经验。我喜欢使用扩展方法。你不喜欢,因为这样做会在数据库和域模型之间造成不匹配。如果您能够做到这一点,则在刷新会话时将删除非活动联系人。有两个很好的选择:
IEnumerable
上创建一个可返回活动联系人的扩展方法。这允许您轻松筛选任何一组联系人,以便仅显示活动联系人