Linq-To-Entities включает - PullRequest
       26

Linq-To-Entities включает

3 голосов
/ 24 октября 2009

В настоящее время я узнаю немного больше о Linq-To-Entities - особенно в данный момент об активной и ленивой загрузке.

proxy.User.Include("Role").First(u => u.UserId == userId)

Предполагается, что пользователь будет загружен вместе со всеми ролями, которые у него есть. У меня есть проблема, но у меня также есть вопрос. Это простая модель, созданная для изучения L2E

У меня сложилось впечатление, что это было разработано, чтобы сделать вещи строго типизированными - так почему я должен написать «Роль»? Кажется, что если бы я изменил имя таблицы, то это не привело бы к ошибке компиляции ...

Моя ошибка такова:

The specified type member 'Roles' is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties are supported.

Решение ниже позволяет мне написать код:

proxy.User.Include(u => u.Role).First(u => u.UserId == userId)

Что НАМНОГО лучше!

1 Ответ

5 голосов
/ 24 октября 2009
  1. Включить - это подсказка для активной загрузки, это не приводит к принудительной загрузке.
  2. Всегда проверяйте свойство IsLoaded, прежде чем ссылаться на что-то, что, как вы надеетесь, было загружено с помощью Include.
  3. Есть способы поместить строго типизированный объект в оператор включения, но нет решения, доступного для этой проблемы, из коробки с Entity Framework. Google что-то вроде: Entity Framework ObjectQueryExtension Включить
...