使用数据库第一个模型:假设我们有经典表Student
, Course
和StudentCourse
(后者显然有FKS到Student
和Course
)。
如果你把这个模式EF,你会得到他们每个人产生的对象。 在Student
和Course
班将各自拥有的集合StudentCourses
,从中你需要跳到另一个关系去的Course
或Student
,分别。
我想有这样的方式生成的代码底层交集表是不可见的,即Student
拥有的集合Courses
和Course
具有集合Students
。 我已经看到了其他的ORM软件(特别是,该做的TopLink )。 可它EF做呢?
按照本教程中,您将获得所需的行为,如果你的StudentCourse
表只包含外键列。 如果它包含任何其他列,EF将产生一个中间实体代表参加。
在这种情况下,丢弃从代理键StudentCourse
表并用一个复合主键应该工作取代它。
您可以使用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?