我尝试在我的EF上执行SaveChanges()
时,我遇到了一个唯一的约束违规行为。
有两列,ID
和Order
。唯一约束是在这两列上。
我正在更新订单(交换其中两个值)。
然而,当我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中是否存在问题(必须设置属性或其他内容以允许更新?)。在我看来,问题是"它"没有正确地进行更新。
感谢任何帮助!
答案 0 :(得分:3)
EntityFramework一次更新一行。
因此,通过切换两个对象的Order
值并调用SaveChanges()
它首先触发这样的内容:
UPDATE TABLENAME SET [Order] = 2 WHERE [TABLENAME].[ID] = 49 AND [TABLENAME].[Order] = 1
如果要执行此更新,表中将有两行在唯一约束中具有相同的值。这就是你得到错误的原因。