在向联结表

时间:2015-05-26 19:31:49

标签: entity-framework many-to-many entities edmx associative-table

我首先使用.Net 4.5,实体框架5,数据库。我的数据库中有一个联结(多对多)表。对于这个例子,我们可以说这个表是“StudentsCourses”:

Students
  -PkStudentId
  -Name

Courses
  -PkCourseId
  -CourseNumber

StudentsCourses
  -FkStudentId
  -FkCourseId

现在这很好用。 “从数据库生成模型”创建一个Student实体,该实体具有到Course实体的导航属性。但问题出在这里:

我需要在StudentsCourses表中添加另一列。让我们称这个专栏为“CourseYear”。所以我们的联结表现在看起来像这样:

StudentsCourses
  -FkStudentId
  -FkCourseId
  -CourseYear

因此,我已将此列添加到数据库并在edmx上运行“从数据库更新模型”。我希望看到为StudentCourses创建一个实体,并为学生和课程提供导航属性。但是没有创建这样的实体。我仍然看到相同的两个表(学生和课程)具有与以前相同的导航属性。

我做了大量的阅读和研究,但并没有真正得到一个明确的答案。有关代码优先的大量信息,我无法应用于我的场景。有没有办法得到我追求的东西?是否像在StudentCourses表中添加PkId一样简单? SQL Replication阻止我这样做。我认为复合材料应该足够了,但也许EF需要一个PK才能做到这一点?我读了一些关于手动设置关系的内容,但找不到任何与我的特定情况有关的内容。可能是我在从数据库更新edmx的过程中错过了一个简单的步骤。我在以下时间做了很多次:添加新表,添加列,删除列等。我遵循与以往相同的步骤,但也许我需要在这种情况下做一些不同的事情?

提前感谢您提供任何帮助。非常感谢。如果有任何更多信息有帮助,请告诉我。

2 个答案:

答案 0 :(得分:0)

从我收集的信息来看,似乎EF不会为没有主键的表格生成模型。

答案 1 :(得分:0)

我这有点晚了,但你在这个帖子中有答案Updating Entity Framework Model after adding a field to a previous look up only table

正如他们在这里所说,你必须删除设计师中学生和课程之间的关系。然后从数据库更新您的模型,并确保在Add选项卡的Tables分支中选中StudentsCourses表。