【发布时间】:2017-02-24 12:23:40
【问题描述】:
我只想更改两个元素的“订单”值,我有以下代码:
int tmpItemOrder = item1.Order;
item1.Order = item2.Order;
item2.Order = tmpItemOrder;
await _db.SaveChangesAsync();
但我遇到了唯一键问题(订单是唯一键)
{"违反 UNIQUE KEY 约束 'IX_EscortItems'。无法插入 对象“dbo.EscortItems”中的重复键。重复键值为 (2, 20)。\r\n语句已终止。"}
据我了解,当系统尝试在事务中设置重复键时,它会引发错误。奇怪的行为,但原样。
如何正确解决这个问题?
【问题讨论】:
-
猜测一下,如果值是按顺序更新的,一旦设置了第一个值,它将立即违反唯一键约束。即使是两个
SaveChanges调用也会产生相同的效果。您可能必须使用中间唯一值。 -
另一个想法是交换密钥是不寻常的,也许问题需要不同的方法 - 只是一个想法。
-
@PeterSmith,你是对的,即使两次 SaveChanges 调用也有相同的效果!
标签: sql sql-server entity-framework-6