Linq-To-Entities включает
-
06-07-2019 - |
Вопрос
В настоящее время я узнаю немного больше о 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)
Что НАМНОГО лучше!
Решение
<Ол>
Включить - это подсказка для активной загрузки, это не приводит к принудительной загрузке.
Всегда проверяйте свойство IsLoaded, прежде чем ссылаться на что-то, что, как вы надеетесь, было загружено с помощью Include.
Есть способы поместить строго типизированный объект в оператор include, но нет решения, доступного для этой проблемы, из коробки с Entity Framework. Google что-то вроде: Entity Framework ObjectQueryExtension Включить
Ол>
Не связан с StackOverflow