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!

Foi útil?

Solução

  1. Incluir é uma dica para carga ansioso, não forçar o carregamento ansioso.
  2. Verifique sempre a propriedade IsLoaded antes referenciando algo que você espera estava ansioso carregado pelo Incluir.
  3. 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
scroll top