Код EF4 первый: проблема с отложенной загрузкой - PullRequest
4 голосов
/ 26 августа 2010

На веб-сайте, над которым я сейчас работаю, я решил попробовать EF4 Code First.Это не кажется плохим, хотя отсутствие поддержки перечислений означает, что впечатляющие моменты сводятся на нет простым коротким приходом.

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

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

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

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

Яполучать мои книги из контекста, используя набор CreateObject - через репозиторий.Этот метод используется как на странице администратора, так и на странице обзора.

спасибо, если вы можете помочь.

Ответы [ 2 ]

8 голосов
/ 27 августа 2010

Чтобы разрешить отложенную загрузку в классе POCO, вы должны пометить свои свойства навигации как виртуальные. Для принудительной загрузки измените запрос в вашем репозитории и используйте что-то вроде Включить («Авторы») в запрашиваемый ObjectSet.

1 голос
/ 26 августа 2010

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

Итак, в своем действии по рецензированию я извлекаю всех авторов из репозитория, не используя их в каких-либоКстати, и затем коллекция моей книги также заполняется.

Я думаю, что все эти колебания приводят к вопросу: как я могу исправить отложенную загрузку, или как я могу гарантировать загруженную загрузку.Я не думаю, что производительность когда-либо будет иметь решающее значение, и теперь мне уже достаточно разбираться с кодом.Думаю, что пока я буду придерживаться Active record / nhibernate для других проектов.

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