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
tablesId
列上具有外键关系
当我运行以下命令时
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对象构建一个包装器。