【发布时间】:2015-04-30 13:12:59
【问题描述】:
我正在编写一个简单的程序来跟踪高尔夫记录,但我看到一些关于实体关系的奇怪结果。
我的表 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 行。这是我构建查询的方式吗?
【问题讨论】:
-
你在使用延迟加载吗?你可以试试这个:`context.Courses.Includ("Holes")` 看看会发生什么
-
ToList调用的查询是什么样的? -
启用延迟加载并不能解决问题,我想我将在这里使用 FK 约束废弃,因为它对我正在做的事情来说过于复杂。
-
您能提供数据库表中的条目吗?
-
我选择移除 FK 约束,只为访问对象构建一个包装器。
标签: asp.net entity-framework-6