NHibernate返回所有有孩子的父母
我有一个家长和孩子班NHibernate返回所有有孩子的父母,nhibernate,Nhibernate,我有一个家长和孩子班 class Parent { bool Enable; List<Child> Children; } class Child { bool Enable; } 类父类 { 布尔使能; 列出儿童名单; } 班童 { 布尔使能; } 我想返回Enable=true的所有父级,并且该父级应该包含Enable=true的所有子级 我创建了以下内容 var parents = Session.QueryOver<Parent>().Where(
class Parent
{
bool Enable;
List<Child> Children;
}
class Child
{
bool Enable;
}
类父类
{
布尔使能;
列出儿童名单;
}
班童
{
布尔使能;
}
我想返回Enable=true的所有父级,并且该父级应该包含Enable=true的所有子级
我创建了以下内容
var parents = Session.QueryOver<Parent>().Where(p => p.Enabled)
.JoinQueryOver<Child>(p => p.Children).Where(c=>c.Enabled)
.List<Parent>();
var parents=Session.QueryOver()。其中(p=>p.Enabled)
.JoinQueryOver(p=>p.Children)。其中(c=>c.Enabled)
.List();
它返回正确的父项(所有的Enable=true),但返回所有的child(即使Enable=false)
有人能帮我纠正我的疑问吗?你应该在Enable=true处返回孩子并加入他们的父母。然后,您可以使用linq按父级对它们进行分组 大概是这样的:
var children = Session.QueryOver<Child>(c => c.Children)
.Where(c => c.Enabled && c.Parent.Enabled)
.Fetch(c => c.Parent) //This will include the parents in the query so you
.List<Child>(); //avoid a Select N+1
var childrenByParent = children.GroupBy(x => x.Parent);
var children=Session.QueryOver(c=>c.children)
.Where(c=>c.Enabled&&c.Parent.Enabled)
.Fetch(c=>c.Parent)//这将在查询中包括父项,因此
.List()//避免选择N+1
var childrenByParent=children.GroupBy(x=>x.Parent);
您应该返回Enable=true的子级并加入其父级。然后,您可以使用linq按父级对它们进行分组
大概是这样的:
var children = Session.QueryOver<Child>(c => c.Children)
.Where(c => c.Enabled && c.Parent.Enabled)
.Fetch(c => c.Parent) //This will include the parents in the query so you
.List<Child>(); //avoid a Select N+1
var childrenByParent = children.GroupBy(x => x.Parent);
var children=Session.QueryOver(c=>c.children)
.Where(c=>c.Enabled&&c.Parent.Enabled)
.Fetch(c=>c.Parent)//这将在查询中包括父项,因此
.List()//避免选择N+1
var childrenByParent=children.GroupBy(x=>x.Parent);
我在答案中添加了一个示例。我在答案中添加了一个示例。