2011-02-03 3 views
1

У меня есть диаграмма объектов:WCF and Entities Framework Lazy Загрузка

Школа -> Классы -> Студенты.

, и я хочу настроить его таким образом, чтобы я мог отправить школьный класс обратно клиенту, и он может обращаться к классам и студентам с ленивой загрузкой.

это возможно?

ответ

4

Вкратце: нет.

Вы можете:

  • отправить обратно все данные, необходимые (в том числе classes и students с вашим school лица) в одном вызове ("жадной загрузки")

или:

  • вам нужно иметь отдельные методы в вашей службе WCF для получения подробных данных в отдельном вызове (что-то вроде: List<Class> GetClassesForSchool(int schoolId), List<Student> GetStudentsForClass(int classId))

Ленивая нагрузка сам по себе работает только до тех пор, как ваш объект контекст Entity Framework все еще вокруг, чтобы быть запрошен для получения дополнительной информации - что, конечно, не тот случай, когда вы посылаете объекты по проводам с использованием WCF.

+1

+1 Неявная ленивая загрузка через веб-сервис - плохая архитектура и ее трудно достичь (вы должны реализовать ее сами в свойствах объекта клиента). Вы должны сделать то, что описано в @marc, или использовать службы данных WCF, которые поддерживают метод Expand для явной загрузки свойств навигации. –

1

Я так не думаю, потому что ваше лицо путешествует по разным уровням, а соединение с базой данных не будет доступно без вашего вмешательства из любого другого уровня.

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

Update: Прочитайте эту статью, если вы хотите узнать больше о DTO схеме:

Смежные вопросы