实体框架6 SaveChanges导致唯一的约束异常

本文关键字:唯一 约束 异常 框架 SaveChanges 实体 | 更新日期: 2023-09-27 18:12:49

当我尝试在EF上执行SaveChanges()时,我得到了一个唯一的约束违反。

有两列,IDOrder。唯一约束是在这两列上。

我正在更新顺序(交换两个值)。

然而,当我做SaveChanges()时,我得到一个DBUpdateExcception说我违反了唯一约束-但我没有!我刚刚交换了顺序

Name | ID | Order
BH   | 49 | 1
JK   | 49 | 2

那么在代码中,它现在看起来像这样(我已经在调试器中检查了EF)

Name | ID | Order
BH   | 49 | 2
JK   | 49 | 1

正如我所说的,当我执行SaveChanges()时,我得到一个异常。

我不知道我的模型在visual studio 2015中是否有问题(必须设置属性或允许更新的东西?)。在我看来,问题似乎是"它"没有正确地进行更新。

感谢您的帮助!

实体框架6 SaveChanges导致唯一的约束异常

EntityFramework一次更新一行。因此,通过交换两个对象的Order值并调用SaveChanges(),它首先触发如下内容:

UPDATE TABLENAME SET [Order] = 2 WHERE [TABLENAME].[ID] = 49 AND [TABLENAME].[Order] = 1

如果执行此更新,则表中的两行在唯一约束中具有相同的值。