【问题标题】:Entity Framework 4.3 - Polymorphic Query With Eager LoadingEntity Framework 4.3 - 具有急切加载的多态查询
【发布时间】:2012-03-15 01:34:22
【问题描述】:

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

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; }
}

我试图找出谁来编写一个 Linq 查询来加载所有父母并急切地加载所有 Child2 的依赖关系。这甚至可能吗?我已经尝试了所有我能想到的 Linq 语句组合,但都没有成功。

【问题讨论】:

    标签: linq polymorphism entity-framework-4.3


    【解决方案1】:

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

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

    如果您还需要加载所有其他派生类型,您很可能需要使用第二个查询或尝试进行一些联合。 EF 中的多态查询不适用于预加载。

    【讨论】:

    • 我将如何做一个工会?我尝试了 context.Child2s.Include(c => c.Dependency).Union(context.Child1s) 它给了我一个错误,说它找不到父级的依赖关系。
    • 您很可能会在应用程序中使用两个单独的查询和联合结果,因为 Include 正在改变结果集的形状,它不能与另一个形状联合。
    猜你喜欢
    • 2013-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多