Простой вопрос о Entity Framework - PullRequest
0 голосов
/ 18 августа 2011

У меня есть очень простой пример:

enter image description here

Это создает следующие простые классы:

enter image description here

Однако, когда я получаю доступ к свойству Cities любого из моих объектов User, считанных из базы данных, для него всегда устанавливается значение null. Я думал, что Entity Framework заполнит это свойство. Я прав? Что я делаю не так?

Спасибо.

РЕДАКТИРОВАТЬ: так же, как примечание, я использую 3,5, а не 4 (похоже, есть некоторые ключевые различия)

Ответы [ 3 ]

2 голосов
/ 18 августа 2011

Я думаю, что вы ищете метод Включить

context.Users.Include("Cities")
1 голос
/ 18 августа 2011

По умолчанию EF использует Ленивая загрузка , чтобы избежать отображения целого графа ссылочной целостности (представьте, что у вас есть больше таблиц в таблице Cities - тогда это сделает чрезвычайно сложным базовый запрос SQL).Огромный и содержит много JOIN).

Таким образом, вам нужно явно включить элементы, которые вы хотите включить, и тогда за кулисами произойдет JOIN.Позвоните .Include("Cities") после того, как вы запросите Пользователей (или любой его поднабор, например Users.Where(...)).

0 голосов
/ 18 августа 2011

Интересно, что вы получаете ноль, а не список с 0 записями.

Поэтому я думаю, что это проблема с определением модели, а не отложенная загрузка или проблема с включением.

Попробуйте создать новую модель.

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