代码之家  ›  专栏  ›  技术社区  ›  gerrod

实体框架引用未自动加载

  •  7
  • gerrod  · 技术社区  · 16 年前

    if (account.HoldingEntity == null && 
        account.HoldingEntityReference.EntityKey != null) {
    
        account.HoldingEntityReference.Load();
        account.HoldingEntity = account.HoldingEntityReference.Value;
    }
    

    HoldingEntity 它始终为null,但是Load将毫无问题地返回HoldingEntity。

    有什么线索吗?

    3 回复  |  直到 16 年前
        1
  •  7
  •   Paulo Santos    16 年前

    使用ADO。NET实体,您需要指定要自动加载的实体 Include

    Dim entity = (From e in db.Entities.Include("SubEntity"))
    
        2
  •  5
  •   Alex James    16 年前

    正如其他人所说,你需要 .Include() .Load()

    在4.0中,您将能够设置 DeferredLoadingEnable ObjectContext (我认为我们正在把这个名字改成更合适的名字 LazyLoadingEnabled

    至于为什么你已经加载了2个关系。这可能是所谓的“关系修复”的副作用。

    .Include() .Load() .

    希望这有帮助

    干杯 亚历克斯

        3
  •  0
  •   marc_s MisterSmith    16 年前

    这是在EF v1中作为设计决策完成的,许多开发人员实际上更喜欢对是否以及何时加载引用的属性进行显式控制。

    EF v4即将发布。NET 4.0在2009年底之前,如果你愿意,你可以选择启用自动延迟加载。看 this blog post 在ADO上。NET团队博客,了解有关EF v4中延迟加载的更多信息。