简单地说,我正在尝试更新相关实体的列表;它们具有复合主键和附加约束(一种序列应该是唯一的,例如 RowNumber)。现在,当对集合进行更复杂的编辑时,我不能只对每一行发布更新,因为会违反约束——例如,用连续的 RowNumbers 重新排序两个实体(让我们暂时搁置该约束的有效性,那就是不是重点)。
所以我想,在这种情况下很容易,我只需删除实体并重新创建它们。除了 EF 似乎检测到删除后插入了相同的实体(基于其保持不变的主键),因此它将删除+插入转换为更新。至少这就是我在绝对确定旧实体和新实体分别处于删除和添加状态之后使用探查器看到的内容。
通常我会说这是一件很合乎逻辑的事情,但是......有没有办法改变这种行为?这真的是发生了什么还是我错过了什么?