c# - 更新实体框架中的实体会导致创建新行
问题描述
我有一个用户表和位置表的情况。两者之间存在多对多关系,因此它们通过仅由两列组成的链接表连接;用户 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 链接表中。
有人对我在这里做错了什么有任何想法吗?
谢谢。
解决方案
推荐阅读
- ruby-on-rails - 计算按月吐出期间天数的最佳方法
- javascript - 如何在有和没有 Lodash 的情况下通过多个键对对象数组进行分组?
- c# - Dns.GetHostAddressesAsync:资源暂时不可用
- java - 使用用户输入填充 JTable
- excel - 使用 Excel 中的某些参数将值分配给列表
- amazon-sagemaker - Sagemaker 突然无法安装 python 包,缺少 python-dev
- javascript - 存储数据和组件数据不一样(vuex + 持久化状态)
- c++ - 抛出未处理的异常:写访问冲突:打印出数组元素
- python - Selenium 等到用户单击按钮
- c# - 根据c#中的给定字符串确定日期逻辑