我正在编写一个简单的程序来跟踪高尔夫记录,我看到一些与实体关系有些奇怪的结果。
我的表Hole
在其CourseId
列和Course
表Id
列上有外键关系。
当我运行以下
时using (var context = new DataAccess.Entities())
{
var courseId = 0;
var holesInCourse = context.Holes.Where(x => x.CourseId == courseId);
var holeList = holesInCourse.ToList();
}
你可以看到它返回了给定0个课程
的9个洞的列表但是当我将查询更改为以下内容时:
using (var context = new DataAccess.Entities())
{
var courseId = 0;
var holesInCourse = context.Courses.FirstOrDefault(x => x.Id == courseId);
var holeList = holesInCourse.Holes.ToList();
}
我有点迷失为什么第二个只有当它明显与9有关系时才会返回4行。这是我构建查询的方式吗?
答案 0 :(得分:0)
在此代码中,
var holesInCourse = context.Courses.FirstOrDefault(x => x.Id == courseId);
你正在分配courseId=0;
这就是为什么你没有得到正确的答案。其中linq将尝试从数据库中获取courseId=0
值的列表。