Значения NULL в свойствах объекта в Entity Framework - PullRequest
2 голосов
/ 12 февраля 2010

Таблицы: Article, Author, Comment (1 статья и 1 автор могут иметь * комментарии)

В базе данных 1 статья, 1 автор и 1 комментарий.

Проблема в том, что код

 myBD my_bd = new myBD();
 var articles = by_bd.Article;

работает нормально, я вижу, что Author и Article имеют 1 комментарий.

Но этот код

    var comm = (from u in my_bd.Comment
                     where ......
                     select u);

возвращает комментарий, но в свойствах Article и Author он имеет значения NULL.Почему?

Ответы [ 2 ]

3 голосов
/ 12 февраля 2010

Entity Framework не поддерживает отложенную загрузку (пока) и пессимистичен по умолчанию. Чтобы получить связанный объект в виде коллекции, вы должны явно включить его в свой запрос.

var comm = from u in my_bd.Comment.Include("Article").Include("Author")
           where ......
           select u;

Делая это, вы явно указываете EF выполнять объединения при создании запроса. Теперь вы сможете выбрать эти свойства.

0 голосов
/ 19 февраля 2010

В качестве альтернативы использованию .Include в исходном запросе вы можете использовать явную загрузку с помощью метода .Load (), например, myCustomer.OrdersReference.Load ()

По-видимому, существуют различия в количестве выполненных SQL-запросов и объеме передаваемых данных.

Объяснил хорошо здесь: http://www.robbagby.com/entity-framework/is-lazy-loading-in-ef-4-evil-or-the-second-coming/

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