出于这个问题的目的,让我们假设我在我的模型中定义了这两个实体 -
public class Person
{
public Guid Id
{
get;
set;
}
public string Name
{
get;
set;
}
}
public class Parent : Person
{
public IEnumerable<Person> Children
{
get;
set;
}
}
我们还假设我有一个PersonRepository,它从数据库中加载所有人。现在,数据库中的某些人将成为父实体,因此定义了子项。
我的问题是,当我从存储库加载人员列表时,是否可以指示Linq包含()任何人都是父实体的子项?
顺便说一下,懒惰加载在这个实例中不起作用,因为在服务层中使用了存储库。
感谢您的帮助。
詹姆斯
答案 0 :(得分:1)
不幸的是,唯一可能的直接方式是:
myContext.Persons.OfType<Parent>.Include("Children")...
这种方法的问题是它只会加载父母。 所以可能的解决方案可能是复杂的Linq查询,它将由.Contcat或.Union连接两部分。一部分将仅查询人员,第二部分将仅查询包含子级的父母。 编辑:它仅在内存(IEnumerable)中工作,而不在db(IQueryable)中。
所以另一种方法可以先运行Person查询,然后只对第一个查询中返回的父项执行第二个查询。