0

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

Students
  -PkStudentId
  -Name

Courses
  -PkCourseId
  -CourseNumber

StudentsCourses
  -FkStudentId
  -FkCourseId

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

我需要在 StudentCourses 表中添加另一列。让我们将此列称为“CourseYear”。所以我们的连接表现在看起来像这样:

StudentsCourses
  -FkStudentId
  -FkCourseId
  -CourseYear

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

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

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

4

2 回答 2

0

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

于 2015-05-27T15:25:13.723 回答
0

我对此有点晚了,但是在将字段添加到以前的仅查找表后,您可以在此线程更新实体框架模型中找到答案

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

于 2016-12-20T15:17:27.967 回答