我首先使用.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的过程中错过了一个简单的步骤。我在以下时间做了很多次:添加新表,添加列,删除列等。我遵循与以往相同的步骤,但也许我需要在这种情况下做一些不同的事情?
提前感谢您提供任何帮助。非常感谢。如果有任何更多信息有帮助,请告诉我。
答案 0 :(得分:0)
从我收集的信息来看,似乎EF不会为没有主键的表格生成模型。
答案 1 :(得分:0)
我这有点晚了,但你在这个帖子中有答案Updating Entity Framework Model after adding a field to a previous look up only table
正如他们在这里所说,你必须删除设计师中学生和课程之间的关系。然后从数据库更新您的模型,并确保在Add选项卡的Tables分支中选中StudentsCourses表。