实体框架5:RelationShips和Attached / Detached对象

时间:2013-05-28 15:31:54

标签: entity-framework entity-framework-5

我有点困惑如何在本地创建的对象中使用多对多关系。 我准备了一个小例子来证明这个问题。

有两个表和一个映射表: Database structure

表中的数据:

db data

Entity Framework创建了两个表和多对多关系:

EF

现在运行应用程序并加载单个学生(ID = 1和他的教室)。 如果学生从数据库加载,那么一切都很好,EF有2个教室:

enter image description here

但是如果用户是在本地创建的(具有相同的Id但更改了名称)并附加到EF,则不会加载教室(studentLocal变量)。

如果我尝试从EF加载学生,情况相同 - 它会让本地用户(student变量有Name="xx")而没有教室:

enter image description here

在视图上,用户可以更改学生的课堂以及更改学生属性,因此我需要更新学生表并合并StudentClassroom表。

  1. 在这种情况下处理的最佳方法是什么?我不想加载每个 一次又一次地回复学生实体。
  2. 有没有办法加载     数据库中存在本地创建的学生的课堂?
  3. 如何合并StudentClassroom记录?我只知道一个 - 负载 现有记录和新记录并合并然后删除全部 他们并从新列表重新创建手动确定 应删除/更新/创建哪些记录。还有更好的吗? 方法

1 个答案:

答案 0 :(得分:0)

您的问题是EF没有为您的模型创建正确的表格。它应该创建3个类而不是2.可能不是因为你没有在数据库中正确设置关系。如果您使用的是SQL Server,请尝试使用图表功能检查您的关系,并在设置模型之前正确设置主键。