Я хочу построить граф объектов, используя Entity Framework 4.2.
Прямо сейчас у меня есть объекты 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();
Мне было бы любопытно, если бы был только метод, о котором я не знал в рамках сущности для создания этих типовотношений.Если кто-то знает простой подход к постепенному заполнению свойств навигации, я был бы признателен за пример кода.