Pregunta

Actualmente estoy aprendiendo un poco más sobre Linq-To-Entities, especialmente en este momento sobre la carga ansiosa y perezosa.

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

Se supone que esto carga al Usuario, junto con cualquier rol que tenga el usuario. Tengo un problema, pero también tengo una pregunta. Es solo un modelo simple creado para aprender sobre L2E

Tenía la impresión de que esto estaba diseñado para hacer que las cosas se escribieran con firmeza. ¿Entonces por qué tengo que escribir "Role"? Parece que si cambiara el nombre de la tabla, esto no crearía un error de compilación ...

Mi error es este:

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

La solución a continuación me permite escribir el código:

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

¡Qué es MUCHO más bonito!

¿Fue útil?

Solución

  1. Incluir es una sugerencia para cargar con entusiasmo, no obliga a cargar con entusiasmo.
  2. Siempre verifique la propiedad de IsLoaded antes de hacer referencia a algo que usted espera haya sido cargado por Include.
  3. Hay formas de poner un objeto fuertemente tipado en la declaración de inclusión, pero no hay una solución disponible para este problema fuera de la caja con Entity Framework. Google algo como: Entity Framework ObjectQueryExtension Include
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top