我有一个绑定到实体(Contact)的元素,它暴露了一些导航属性。

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

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

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

我认为这应该以某种方式成为Entity-Framework的一部分。

有帮助吗?

解决方案

我不是肯定的我跟着这个问题,但让我检查一下:

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

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

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top