我有一个表,该表在具有序数列的表上具有唯一索引。因此,例如该表将具有以下列:
表 ID、ID1、ID2、序数
唯一索引跨 ID1、ID2、Ordinal 列。
我遇到的问题是,当从数据库中删除记录时,我会重新排序序数,以便它们再次连续。我的删除功能将如下所示:
public void Delete(int id)
{
var tableObject = Context.TableObject.Find(id);
Context.TableObject.Remove(tableObject);
ResequenceOrdinalsAfterDelete(tableObject);
}
问题是,当我调用 Context.SaveChanges() 时,它会破坏唯一索引,因为它似乎以与传递语句不同的顺序执行语句。例如,会发生以下情况:
- 重新排序序数
- 删除记录
代替:
- 删除记录
- 重新排序序数
这是 EF 的正确行为吗?如果是,有没有办法覆盖这种行为来强制执行顺序?
如果我没有正确解释这一点,请告诉我......