Question

J'en apprends un peu plus sur Linq-To-Entities - en particulier pour le moment sur le chargement enthousiaste et paresseux.

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

Ceci est supposé charger l'utilisateur, ainsi que tous les rôles que cet utilisateur a. J'ai un problème, mais j'ai aussi une question. C'est juste un modèle simple créé pour en savoir plus sur L2E

J'avais l'impression que cela était conçu pour que les choses soient fortement typées - alors pourquoi dois-je écrire "rôle"? Il semble que si je changeais le nom de la table, cela ne créerait pas une erreur de compilation ...

Mon erreur est la suivante:

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

La solution ci-dessous me permet maintenant d’écrire le code:

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

Ce qui est BEAUCOUP plus sympa!

Était-ce utile?

La solution

  1. Inclure est un indice de charge désirée, cela ne force pas le chargement.
  2. Vérifiez toujours la propriété IsLoaded avant de référencer quelque chose que vous espériez avoir chargé chargé par Include.
  3. Il existe des moyens d'insérer un objet fortement typé dans l'instruction include, mais aucune solution n'est disponible avec ce problème, avec Entity Framework. Google quelque chose comme: Entity Framework ObjectQueryExtension Include
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top