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