Nhibernate 如何基于属性选择父对象和一个子对象?
在流利的NHibernate中,我有一个a班,一个B班的孩子 我想选择所有A,其中有一个具有特定属性B==“foo”的子B 我不想让A的其他孩子回来 什么是查询表达式来获取此信息Nhibernate 如何基于属性选择父对象和一个子对象?,nhibernate,fluent-nhibernate,Nhibernate,Fluent Nhibernate,在流利的NHibernate中,我有一个a班,一个B班的孩子 我想选择所有A,其中有一个具有特定属性B==“foo”的子B 我不想让A的其他孩子回来 什么是查询表达式来获取此信息 var list = session.Query<A>() .FetchMany(a=>a.B) .Where( a=>childBs.Any(b=>b=="foo")); var list=session.Query() .FetchMany(a=>a.B) 其中(a=>chi
var list = session.Query<A>()
.FetchMany(a=>a.B)
.Where( a=>childBs.Any(b=>b=="foo"));
var list=session.Query()
.FetchMany(a=>a.B)
其中(a=>childBs.Any(b=>b==“foo”);
但这将返回所有的子B,而不仅仅是“foo”一个。NHibernate将永远不会检索半加载的集合
如果你想用一个A和一个B来检索一个A,使用投影。有一些难看的方法可以让它做你想做的事情(在集合中使用过滤器),但我不推荐它。为什么不反向查询并执行以下操作:
var list = session.QueryOver<B>()
.Where(b => b.B == "foo")
.Fetch(b => b.A).Eager
.List();
var list=session.QueryOver()
.其中(b=>b.b==“foo”)
.Fetch(b=>b.A).渴望
.List();
它不能完全满足您的需要(如果您访问b.A.ChildBs,它将加载该集合),但它将检索您正在查找的数据(假设您具有从b到A的关系)您能给出一个使用投影的示例吗?我是FNH的新手。