LINQ to Entities Incluir
-
06-07-2019 - |
Pergunta
Atualmente estou aprendendo um pouco mais sobre LINQ to Entities -. Particularmente no momento sobre o carregamento ansioso e preguiçoso
proxy.User.Include("Role").First(u => u.UserId == userId)
Isto é suposto para carregar o usuário, juntamente com todos os papéis que o usuário tem. Eu tenho um problema, mas eu também tenho uma pergunta. É apenas um modelo simples criado para aprender sobre L2E
Eu estava sob a impressão de que este foi concebido para tornar as coisas digitar fortemente - então por que eu tenho que escrever "Papel"? Parece que se eu mudasse o nome da tabela, então isso não cria um erro de compilação ...
Meu erro é o seguinte:
The specified type member 'Roles' is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties are supported.
A solução abaixo me permite agora escrever o código:
proxy.User.Include(u => u.Role).First(u => u.UserId == userId)
O que é mais agradável MUITO!
Solução
- Incluir é uma dica para carga ansioso, não forçar o carregamento ansioso.
- Verifique sempre a propriedade IsLoaded antes referenciando algo que você espera estava ansioso carregado pelo Incluir.
- Existem maneiras de colocar um objeto fortemente tipado na declaração incluem, mas não há uma solução disponível para este problema fora da caixa com o Entity Framework. Google algo como: Entity Framework ObjectQueryExtension Incluir
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow