2015-04-30 201 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值。