首页 > 解决方案 > 更新实体框架中的实体会导致创建新行

问题描述

我有一个用户表和位置表的情况。两者之间存在多对多关系,因此它们通过仅由两列组成的链接表连接;用户 ID 和位置 ID。这些分别是 User 和 Location 表上 ID 列的 FK。

我希望能够更新当前用户以将他们链接到当前位置,反之亦然。用户已经存在并且位置已经存在于数据库中,但目前两者之间没有链接。

当我更新 User 对象时,即使我已将 UserLocations 属性设置为我想要链接在一起的位置列表(以及正确填充的 ID),并且在更新发生之前一切看起来都很好,插入数据库时在 Location 表中为列表中的每个条目创建全新的 Location。这导致本质上是重复的行,只是具有不同的 PK。我还没有开始,但我假设一旦我尝试在 Locations 上实现相同的功能,它就会复制用户。

例如,对于 ID 为 1 的用户和 ID 为 1、2 和 3 的位置列表。我希望链接表中的行读取 1|1、1|2 和 1|3。但是,它正在创建 ID 为 4、5 和 6 的三个新位置,但其余数据与 ID 1、2 和 3 的相同,并将 1|4、1|5 和 1|6 插入到链接表中.

如果我向 Entity Framework 提供了一个已经填充了 ID 的对象列表,我希望它能够识别数据库中已经存在一个现有行,并使用该 ID 插入到 UserLocation 链接表中。

有人对我在这里做错了什么有任何想法吗?

谢谢。

标签: c#mysqlentity-framework

解决方案


推荐阅读