我有点困惑如何在本地创建的对象中正确处理多对多关系。我准备了一个小例子来演示这个问题。
有两张表和一张映射表:
和表格中的数据:
实体框架创建了两个表和多对多关系:
现在运行应用程序并加载单个学生(ID=1 和他的教室)。如果学生是从数据库中加载的,那么一切都很好,EF 有 2 个教室:
但是,如果用户是在本地创建的(具有相同的 Id 但更改了名称)并附加到 EF,则不会加载教室(studentLocal
变量)。
如果我尝试从 EF 加载学生,同样的情况 - 它获取本地用户(student
变量 has Name="xx"
)并且没有教室:
在视图中,用户可以更改学生的教室以及更改学生属性,因此我需要更新学生表并合并 StudentClassroom 表。
- 在这种情况下,最好的处理方式是什么?我不想一次又一次地加载每个回发学生实体。
- 有没有办法为数据库中存在的本地创建的学生加载教室?
- 如何合并 StudentClassroom 记录?我只知道一个-加载现有记录和新记录并合并,然后删除所有记录并从新列表中重新创建,或者手动确定应该删除/更新/创建哪些记录。有更好的方法吗?