我正在使用实体框架,我遇到了一个有趣的绊脚石。假设有一个db表“Item”,其中“sequence”列的类型为int(当然还有其他列)。列“序列”必须是唯一的,它用于(重新)订购项目。
EF将此表映射到具有“sequence”int属性的“Item”类。现在让我们说我想通过相互交换彼此的序列号来交换两个项目的位置。在调用SaveChanges()时,EF会抛出一个抱怨“序列”唯一性的异常。它可能会生成两个UPDATE,第一个可能会失败。
我认为这个问题的简单SQL解决方案是使用第三个UPDATE在流程中引入一个唯一的序列值,但我坚持使用EF。
有什么想法吗?
编辑:我正在使用SQL Express。