Je commence tout juste à explorer le cadre des entités, et je me suis dit qu'il était temps de voir ce dont tout le monde se plaignait. Je rencontre un problème où les entités ne semblent pas renvoyer le contexte de l'objet. J'ai généré le modèle à partir d'une base de données avec trois tables qui se lient les unes aux autres.
Courses
Instructors
CanTeach
Les relations sont telles que vous pouvez vous y attendre : un cours peut être lié à plusieurs entités CanTeach et un instructeur peut également être lié à plusieurs entités CanTeach. J'ai également ajouté un service OData à mon projet qui utilise le même modèle. Je peux donc exécuter des requêtes telles que
from a in CanTeach
where a.Instructor.FirstName == "Barry"
select new { Name = a.Instructor.FirstName + " " + a.Instructor.LastName,
Course = a.Course.Name}
sans problème contre le point de terminaison OData en utilisant LINQPad. Cependant, lorsque j'effectue une requête simple comme
public Instructor GetInstructorFromID(int ID)
{
return context.Instructors.Where(i => i.ID == ID).FirstOrDefault();
}
La liste CanTeach est vide. Je sais que tout dans EF est chargé paresseusement et qu'il est possible que mon contexte soit hors de portée au moment où je regarde le contexte de l'objet, mais même en essayant d'obtenir le contexte de l'objet dès que la requête est exécutée, le contexte de l'objet est vide.
Qu'est-ce que je fais de travers ?
Edita:
En plus de la réponse ci-dessous, j'ai trouvé que
return context.Instructors.Include("CanTeach").Where(i => i.ID == ID).FirstOrDefault();
a fonctionné pour ceux qui recherchent une API plus fluide.