【问题标题】:Foreign keys and entity relationships外键和实体关系
【发布时间】:2015-04-30 13:12:59
【问题描述】:

我正在编写一个简单的程序来跟踪高尔夫记录,但我看到一些关于实体关系的奇怪结果。 我的表 Hole 在它的 CourseId 列和 CourseId 列上有一个外键关系。

当我运行以下内容时

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


【解决方案1】:

在这段代码中, var holesInCourse = context.Courses.FirstOrDefault(x => x.Id == courseId); 你正在分配courseId=0; 这就是为什么您没有得到正确答案的原因。这里 linq 将尝试从数据库中获取带有 courseId=0 值的列表。

【讨论】:

    猜你喜欢
    • 2017-07-20
    • 1970-01-01
    • 1970-01-01
    • 2020-07-08
    • 1970-01-01
    • 1970-01-01
    • 2018-09-09
    • 1970-01-01
    • 2022-01-04
    相关资源
    最近更新 更多