Asp.net 外键和实体关系

Asp.net 外键和实体关系,asp.net,entity-framework-6,Asp.net,Entity Framework 6,我正在写一个简单的程序来跟踪高尔夫记录,我看到了一些实体关系的奇怪结果。 我的表格Hole在其CourseId列和CoursetablesId列上具有外键关系 当我运行以下命令时 using (var context = new DataAccess.Entities()) { var courseId = 0; var holesInCourse = context.Holes.Where(x =>

我正在写一个简单的程序来跟踪高尔夫记录,我看到了一些实体关系的奇怪结果。 我的表格
Hole
在其
CourseId
列和
Course
tables
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();
            }

我有点不明白为什么第二行只返回4行,而它显然与9有关系。这就是我构建查询的方式吗?

在这段代码中,
var holesInCourse=context.Courses.FirstOrDefault(x=>x.Id==courseId)
您正在分配
courseId=0

这就是为什么您得不到正确答案的原因。在这里,linq将尝试从数据库中获取具有
courseId=0
值的列表。

您是否使用延迟加载?你能试试这个:`context.Courses.include(“Holes”)`看看发生了什么
ToList
调用的查询是什么样子的吗?启用延迟加载并不能解决问题,我想我将在这里放弃使用FK约束,因为这对于我正在做的事情来说太复杂了。您能在数据库表中提供条目吗?我选择删除FK约束,只为access对象构建一个包装器。