10

使用数据库优先模型:假设我们有经典的表Student, Courseand StudentCourse(后者显然对Studentand有 FK Course)。

如果将此模型导入 EF,您将获得为每个模型生成的对象。Student和类将Course每个都有一个集合StudentCourses,您需要从中跳转另一个关系才能分别到达Courseor Student

我希望以这样一种方式生成代码,即底层交集表是不可见的,即Student有一个集合Courses,并且Course有一个集合Students。我已经在其他 ORM 软件(特别是TopLink)中看到了这一点。可以在EF中完成吗?

4

2 回答 2

10

根据本教程,如果您的StudentCourse表仅包含外键列,您将获得所需的行为。如果它包含任何其他列,EF 将生成一个中间实体来表示连接。

在这种情况下,从表中删除代理键StudentCourse并用复合主键替换它应该可以工作。

于 2012-11-28T12:20:29.323 回答
-3

您可以使用 ICollections 在 EF Code First 中执行此操作。例如:

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>();
    }
}

重复课程并将其全部交换。这将在您的数据库中创建三个具有 m-to-m 关系的表(Student、Course 和 StudentCourse)。最重要的是 StudentCourse 将是一个不可见的链接表,在您的模型中没有实体。

于 2012-11-27T16:30:47.343 回答