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

C# 实体框架6 SaveChanges导致唯一约束异常,c#,entity-framework-6,C#,Entity Framework 6,在尝试对EF执行SaveChanges()时,我遇到了唯一的约束冲突 有两列,ID和Order。唯一约束在这两列上 我正在更新顺序(交换两个值) 但是,当我执行SaveChanges()时,我会得到一个dbupdateException的消息,说我违反了唯一约束,但我没有我刚交换了订单 Name | ID | Order BH | 49 | 1 JK | 49 | 2 所以在代码中,现在看起来是这样的(我已经在调试器中检查了EF) 正如我所说,当我执行SaveChanges()操作时,

在尝试对EF执行
SaveChanges()
时,我遇到了唯一的约束冲突

有两列,
ID
Order
。唯一约束在这两列上

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

但是,当我执行
SaveChanges()
时,我会得到一个
dbupdateException
的消息,说我违反了唯一约束,但我没有我刚交换了订单

Name | ID | Order
BH   | 49 | 1
JK   | 49 | 2
所以在代码中,现在看起来是这样的(我已经在调试器中检查了EF)

正如我所说,当我执行
SaveChanges()
操作时,会出现一个异常

我不知道我在visual studio 2015中的模型是否存在问题(必须设置属性或其他允许更新的内容?)。在我看来,问题在于“it”没有正确地进行更新


谢谢你的帮助

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

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

如果要执行此更新,则表中有两行在唯一约束中具有相同的值。这就是为什么会出现错误。

发布实际的C代码,如模型和保存更改,如果我正确理解这是不可能的。看见如回答中所述,可以删除旧实体并读取新实体,但这取决于您的数据库关系结构。@Callumlington抱歉,我在发布时无法访问我的代码-我必须在午餐时尝试并从内存中执行该操作。@Ieagle感谢您的链接。请注意,在我的情况下,我不是在处理PK。你不能添加一个任意的PK吗?这就是我担心的。那么,有没有办法做到我想做的事情呢?我不能成为第一个需要更新作为唯一约束一部分的值的人???我不认为可以通过代码暂时禁用DB上的约束。。。
UPDATE TABLENAME SET [Order] = 2 WHERE [TABLENAME].[ID] = 49 AND [TABLENAME].[Order] = 1