【发布时间】:2016-05-09 13:49:48
【问题描述】:
我一直在努力解决关于数据库视图的“一对多”关系。
我正在使用实体框架,我有这个“简化”模型:
“课程”实体。 一个“学生”实体。
一个课程可以有很多学生。
以下代码可以正常工作:
public class Course
{
public int Id { get; set; }
public virtual List<Student> Students { get; set; }
}
public class Sudent
{
public int CourseId { get; set; }
public virtual Course Course { get; set; }
}
private List<Course> GetCourses()
{
List<Course> courses;
using (var db = context ?? new MyContext())
{
courses = (from course in db.Courses select course)
.Include(l => l.Students)
.ToList();
}
}
这是我的 MyContext:
public class MyContext : DbContext
{
protected MyContext()
{}
public virtual DbSet<Course> Courses { get; set; }
public virtual DbSet<OpenCourse> OpenCourses { get; set; }
}
我有一个“OpenCourses”视图,它可以获取所有开放的课程。
public class OpenCourse
{
public int Id { get; set; }
public virtual List<Student> Students { get; set; }
}
private List<OpenCourse> GetOpenCourses()
{
List<Course> courses;
using (var db = context ?? new MyContext())
{
courses = (from course in db.OpenCourses select course)
.Include(l => l.Students)
.ToList();
}
}
当我运行它时,我得到以下内部异常: “列名 'OpenCourse_Id' 无效。”
我知道我必须以某种方式将 OpenCourse 视图与许多学生相关联。 但是怎么做呢?
最好我想在我的方法和我的 lambda 表达式中这样做。
【问题讨论】:
-
这种关联通常在数据库上下文对象中完成。您可以发布
MyContext的代码吗? -
是的。我已经看到了。但我没有成功。关于如何做的任何想法?
标签: c# entity-framework