2015-04-30 2 views
3

Я пишу простую программу для отслеживания записей в гольф, и я вижу некоторые странные результаты с отношениями сущностей. My table Hole имеет отношение внешнего ключа на его колонке CourseId и таблицы CourseId столбец.Внешние ключи и сущностные отношения

Когда я запускаю следующий

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

Вы можете видеть, что он возвращается список из 9 отверстий для данного курса от 0

Однако при изменении запроса на следующие:

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

Я немного потерял, почему второй возвращает только 4 строки, когда он явно имеет отношение к 9. Является ли это тем, как я строю свой запрос?

+0

Вы используете ленивую загрузку? вы можете попробовать следующее: 'context.Courses.Includ (" Holes ")', чтобы увидеть, что происходит – renakre

+0

Как выглядят запросы обоих вызовов ToList? –

+0

Включение ленивой загрузки не помогло решить эту проблему, я думаю, что я собираюсь отказаться от использования ограничений FK здесь, поскольку это слишком сложно для того, что я делаю. –

ответ

0

В этом коде var holesInCourse = context.Courses.FirstOrDefault(x => x.Id == courseId); вы назначаете courseId=0; Вот почему вы не получаете надлежащий answer.here LINQ попытаются взять список с courseId=0 значения из базы данных.

Смежные вопросы