如何阻止Entity Framework加载嵌套对象

时间:2015-01-23 17:09:28

标签: c# entity-framework

我试图找出如何告诉实体框架如何急切加载一对多的关系。这是我面临的一个示例情况。我有两个实体:

public class A
{
    public Guid ID { get; set; }
    public B B { get; set; }
}

public class B
{
    public Guid ID { get; set; }
    public ICollection<A> As { get; set; }
    public ICollection<C> Cs { get; set; }
}

public class C
{
   public Guid ID { get; set; }
}

如果我执行Context.B属性As和Cs为null,我期望。如果我Context.A.Include('B')属性B已填充且Cs为null,我期望以及我想要的属性同样如此,但是我填充了我不想要的。我想阻止Entity Framework加载属性As。这就像实体框架说的那样“好吧你想要实体A和B哦,看看B有As,所以我们也应该填充它。”我不希望这样。

1 个答案:

答案 0 :(得分:-2)

您需要在上下文级别启用延迟加载,并将该属性标记为vritual

public class A
{
    public Guid ID { get; set; }
    public B B { get; set; }
}

public class B
{
    public Guid ID { get; set; }
    public virtual ICollection<A> As { get; set; }
    public virtual ICollection<C> Cs { get; set; }
}

public class C
{
   public Guid ID { get; set; }
}

public partial class MyDbContext : DbContext
{
    public MyDbContext(): base("name=MyConnection")
    {
        this.Configuration.LazyLoadingEnabled = true;
    }

}