要求: 我正在尝试查询客户列表。 每个客户都可以包含联系人列表。 只应返回活动的联系人。
代码:
Session.QueryOver<Customer>()
.Fetch(x => x.Contacts.Where(c => c.Active))
.Eager
.TransformUsing(new DistinctRootEntityResultTransformer())
.Future()
.AsQueryable();
错误: 表达式x.Contacts.Where中无法识别的方法调用(c =&gt; c.Active)
那么,我该如何只过滤活动的联系人呢?
答案 0 :(得分:1)
您不这样做,因为这样做会在数据库和域模型之间造成不匹配。如果您能够执行此操作,则会在刷新会话时删除非活动联系人。有两个不错的选择:
IEnumerable<Contact>
上创建一个返回活动联系人的扩展方法。这使您可以轻松过滤任何一组联系人以仅显示活动的联系人。NHibernate filters也可能是一种选择,但我对它们没有经验。我赞成使用扩展方法。