2015-04-30 1 views
3

J'écris un programme simple pour suivre les records de golf et je vois des résultats étranges avec les relations d'entités. Ma table Hole a une relation de clé étrangère sur sa colonne CourseId et la colonne Course tables Id.Clés étrangères et relations d'entité

Quand je lance le

suivant
using (var context = new DataAccess.Entities()) 
      { 
       var courseId = 0; 
       var holesInCourse = context.Holes.Where(x => x.CourseId == courseId); 
       var holeList = holesInCourse.ToList(); 
      } 

enter image description here

Vous pouvez voir qu'il retourne la liste des 9 trous pour le cours donné de 0

Cependant quand je change la requête à la suivant:

using (var context = new DataAccess.Entities()) 
      { 
       var courseId = 0; 
       var holesInCourse = context.Courses.FirstOrDefault(x => x.Id == courseId); 
       var holeList = holesInCourse.Holes.ToList(); 
      } 

enter image description here

Je suis un peu perdu pourquoi le second ne renvoie que 4 lignes quand il a clairement une relation avec 9. Est-ce la façon dont je construis ma requête?

+0

utilisez-vous le chargement paresseux? pouvez-vous essayer ceci: 'context.Courses.Includ (" Holes ")' pour voir ce qui se passe – renakre

+0

A quoi ressemblent les requêtes des deux appels 'ToList'? –

+0

Activer le chargement paresseux n'a pas résolu le problème, je pense que je vais abandonner en utilisant des contraintes FK ici car c'est juste trop complexe pour ce que je fais. –

Répondre

0

Dans ce code, var holesInCourse = context.Courses.FirstOrDefault(x => x.Id == courseId); vous assignez courseId=0; c'est pourquoi vous ne recevez pas LINQ bon de answer.here va essayer de prendre la liste avec courseId=0 valeur de base de données.