Запрос Linq для данных EF 4.1 с вложенными списками - PullRequest
1 голос
/ 13 ноября 2011

Я работаю с WPF и EF 4.2 для создания настольного приложения.У меня есть 3 объекта, которые имеют каскадные отношения один-ко-многим, у учеников есть ноль или более школ.Школы посещают ноль или более классов.Мне нужно отобразить данные в сгруппированном списке, показывающем ученика, все его школы, а затем все их классы.

Students          School            Class
int Id            int Id            int Id
string Name       string Name       string Subject
int yearBorn      string Address    int Credits
IList<School>     IList<Class>

Я ошеломлен тем, как формировать данные.Проблема в том, что EF 4.2 скрывает Id сущностей в объектах Navigation, поэтому я не могу использовать их в качестве ключей в «group by».

Следующая проблема заключается в том, что я не уверен, как включить в группы вложение второго уровня, поскольку мне также необходимо возвращать атрибуты объектов по пути, например Student.Name или School.Address.

1 Ответ

1 голос
/ 13 ноября 2011

Вам не нужно Group By - просто получить объекты в их текущем графе объектов.

Стандарт это что-то вроде

var context = new EntityContext();
var students = context.Students.Include("Schools").Include("Schools.Classes");
return students;

Возвращает граф объектов, содержащий набор учеников, где каждый ученик содержит набор школ, где каждая школа содержит набор классов. «Группировка» выполняется EF - это цель ORM, который отображает таблицы реляционной базы данных в объекты в вашем коде.

...