Я столкнулся с некоторыми проблемами с памятью при использовании EF4.1, проблемы в основном возникают в такой ситуации: представьте, что у меня есть ученики, которые могут посещать один или несколько курсов, и несколько пользователей могут посещать один и тот же курс.Итак, у меня есть что-то вроде:
Student * < - > 1-* Course
Представьте, что у меня в BD 2 студента и 1 курс.Вот так:
Ана посещает курс английского языка Боб посещает курс английского языка
Мой график объектов выглядит примерно так:
Ana
\
English Course
/
Bob
Это нормально.
Я сохраняю это, и это прекрасно, две строки в таблице учеников и одна в таблице курсов.
Проблема в том, когда я пытаюсь получить эти данные.
Когда я делаю что-то вроде:
var students = (from s in students
select s).Include("Courses");
Это результирующий график:
Ana -> English Course
Bob -> English Course
Объект дублирован.Представьте себе ситуацию, когда глубина этого дерева намного больше, и тысячи студентов и тысячи курсов посещают один и тот же курс.
Использование памяти для этого запроса было бы огромным, как решить эту справочную проблему?