【问题标题】:Eager Loading on tracked items?渴望加载跟踪的项目?
【发布时间】:2009-11-29 21:53:22
【问题描述】:

我有一个绑定到实体(联系人)的元素,该实体公开了一些导航属性。

我希望,在某些操作(即“加载孩子”按钮)上,联系人应该为其​​所有孩子和孙子加载,就像我可以在执行之前使用 ObjectQuery.Include 一样;示例(伪):

DirectCast(element.DataContext, Contact).SubContacts. _
   Include("Address.State"). _
   Load()

我希望能够通过像上面的示例重新加载项目来调整结果,而不仅仅是在查询模型本身时。

我认为这在某种程度上应该是实体框架的一部分。

【问题讨论】:

    标签: entity-framework entity-relationship eager-loading navigation-properties


    【解决方案1】:

    我不确定我是否遵循了这个问题,但让我检查一下:

    您想要获取一个已经加载的实体,然后加载一个导航属性包含该属性的路径。这实际上并不难,只要您使用与加载第一个对象相同的上下文即可。

    重要的一点是,每当您执行返回实体的查询时,Entity Framework 都会自动将它与您已经拥有的任何相关对象链接起来。所以你真正想要的是生成一个返回额外数据的新查询,其中包含一些。

    Entity Framework 中的每个引用都有一个名为CreateSourceQuery 的方法。它返回一个对象查询,因此您可以使用它来执行此操作(抱歉,C#):

    AlreadyLoadedContact.SubContacts.CreateSourceQuery().Include("Address.State").ToList();
    

    ToList 调用执行查询,Entity Framework 将获取所有结果并自动将它们添加到您的 SubContacts EntityCollection。

    【讨论】:

      猜你喜欢
      • 2013-05-06
      • 1970-01-01
      • 2013-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-18
      • 2011-01-25
      • 1970-01-01
      相关资源
      最近更新 更多