2015-04-30 205 views
3

我正在编写一个简单的程序来跟踪高尔夫记录,我看到一些奇怪的结果与实体关系。 我的表HoleCourseId列和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值。