实体框架可以处理多对多的关系没有交集的对象?(Can Entity Framework handle

2019-07-04 04:48发布

使用数据库第一个模型:假设我们有经典表StudentCourseStudentCourse (后者显然有FKS到StudentCourse )。

如果你把这个模式EF,你会得到他们每个人产生的对象。 在StudentCourse班将各自拥有的集合StudentCourses ,从中你需要跳到另一个关系去的CourseStudent ,分别。

我想有这样的方式生成的代码底层交集表是不可见的,即Student拥有的集合CoursesCourse具有集合Students 。 我已经看到了其他的ORM软件(特别是,该做的TopLink )。 可它EF做呢?

Answer 1:

按照本教程中,您将获得所需的行为,如果你的StudentCourse表只包含外键列。 如果它包含任何其他列,EF将产生一个中间实体代表参加。

在这种情况下,丢弃从代理键StudentCourse表并用一个复合主键应该工作取代它。



Answer 2:

您可以使用ICollections做到在EF代码第一次。 例如:

public class Student 
{ 
    public int ID { get; set; }
    public string Name { get; set; }
    public virtual ICollection<Course> Courses { get; set; }

    public Student()
    {
        Courses = New HashSet<Course>();
    }
}

重复课程和遍布掉它。 这将在数​​据库中创建三个表(学生,课程和StudentCourse)与M-到-M的关系。 最重要的StudentCourse将是一个没有实体模型中的一种无形的链接表。



文章来源: Can Entity Framework handle many to many relationship without an intersection object?