我想使用Entity Framework 4.2構建對象圖。EF4使用POCO在單獨查詢中獲取關聯
現在,我有POCO實體,使用ICollection作爲導航屬性。我想避免使用EntityCollection或任何EF特定的。
我想避免由於使用過大而導致的大量連接。給定一個對象,我想填充它的導航屬性,導致一個單獨的數據庫查詢。
有沒有辦法直接填充ICollection?現在,我正在解決這個問題,但這真的很痛苦。
// grab the user, brand users and brands
User user = entities.Users
.Include(item => item.BrandUsers.Select(brandUser => brandUser.Brand))
.Where(item => item.Name == userName)
.SingleOrDefault();
// grab the pending share grants and brands
entities.Users
.Include(item => item.ToShareGrants.Select(shareGrant => shareGrant.Brand))
.Where(item => item.Id == user.Id)
.Load();
return user;
我不喜歡這種方法的一件事是我重新查詢頂層對象。如果我不這樣做,當沒有對象返回時,導航屬性不會被填充(留空)。例如,下面的代碼如果僅僅作品被返回的結果:
entities.ShareGrants
.Include(item => item.Brand)
.Where(item => item.ToUserId == user.Id)
.Load();
我很好奇,如果有隻是一個我是不是在實體框架意識到建立這些類型的關係的方法。如果有人知道一個簡單的方法來填寫導航屬性的步驟,我會很感激的代碼示例。
我關閉了延遲加載和代理生成。看來Include是填充導航屬性的唯一方法。我正在尋找的是一種顯式加載導航屬性的方法(通過數據庫查詢)。 – 2012-01-27 01:02:42