Linq 实体框架4.3-带即时加载的多态查询

Linq 实体框架4.3-带即时加载的多态查询,linq,polymorphism,entity-framework-4.3,Linq,Polymorphism,Entity Framework 4.3,我有一个模型,看起来像这样: public abstract class Parent { public int Id { get; set; } } public class Child11 : Parent {} public class Child2 : Parent { public virtual Dependency Dependency { get; set; } } public class Dependency { public int Id {

我有一个模型,看起来像这样:

public abstract class Parent
{
    public int Id { get; set; }
}

public class Child11 : Parent
{}

public class Child2 : Parent
{
    public virtual Dependency Dependency { get; set; }
}

public class Dependency
{
    public int Id { get; set; }
    public virtual ICollection<Child2> Children { get; set; }
}
公共抽象类父类
{
公共int Id{get;set;}
}
公共类儿童11:家长
{}
公共类Child2:父类
{
公共虚拟依赖项{get;set;}
}
公共类依赖关系
{
公共int Id{get;set;}
公共虚拟ICollection子项{get;set;}
}

我正试图找出谁来编写一个Linq查询,该查询加载所有家长,并加载对所有Child2的依赖。这可能吗?我尝试了我能想到的所有Linq语句组合,但都没有成功。

如果您需要只加载child2,可以使用:

var child2 = context.Parents
                    .OfType<Child2>()
                    .Include(c => c.Dependency)
                    .ToList();
var child2=context.Parents
第()类
.Include(c=>c.Dependency)
.ToList();

如果您还需要加载所有其他派生类型,则很可能需要使用第二个查询或尝试进行某种联合。EF中的多态查询不能很好地用于急切加载。

我如何进行联合?我尝试了context.Child2s.Include(c=>c.Dependency).Union(context.Child1s),但它给了我一个错误,说它找不到父级上的依赖关系关联。您很可能会在应用程序中使用两个单独的查询和联合结果,因为Include正在更改结果集的形状,并且不能与其他形状联合。