0

我有一个元素绑定到一个实体(联系人),公开一些导航属性。渴望加载追踪项目?

我想,这对一些行动(即“载入孩子”按钮),联系人应该载入其所有的孩子和孙子一样,我可以在行刑前的ObjectQuery.Include做;例如(伪):

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

我希望能也重新加载的项目,如上面的例子中,查询模式本身不仅在塑造的结果。

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

回答

1

我还不能肯定我跟随的问题,但让我检查:

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

重要的一点是,只要你做到这一点返回实体的查询,实体框架会自动与你已经拥有了相关的对象链接起来。所以你真正想要的是产生一个新的查询,返回额外的数据,包括一些。

实体框架中的每个引用有一个名为CreateSourceQuery方法。它返回一个对象查询,所以你可以用它来做到这一点(对不起,C#):

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

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

+0

令人惊叹!非常感谢你,这真的很有帮助! – Shimmy 2009-11-30 06:23:57