0

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

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

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

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

我认为这应该以某种方式成为实体框架的一部分。

4

1 回答 1

1

我不肯定我遵循这个问题,但让我检查一下:

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

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

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

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

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

于 2009-11-30T04:38:52.687 回答