相关疑难解决方法(0)

DbContext SaveChanges语句执行顺序

我有一个表,在具有Ordinal列的表上具有唯一索引.例如,表格将包含以下列:

TableId,ID1,ID2,Ordinal

唯一索引跨越ID1,ID2,Ordinal列.

我遇到的问题是,当从数据库中删除记录时,我会重新排序序数,以便它们再次顺序.我的删除功能如下所示:

    public void Delete(int id)
    {
        var tableObject = Context.TableObject.Find(id);
        Context.TableObject.Remove(tableObject);
        ResequenceOrdinalsAfterDelete(tableObject);
    }
Run Code Online (Sandbox Code Playgroud)

问题在于,当我调用Context.SaveChanges()时,它会打破唯一索引,因为它似乎以不同于传递的顺序执行语句.例如,发生以下情况:

  1. 重新排列普通话
  2. 删除记录

代替:

  1. 删除记录
  2. 重新排列普通话

这是EF的正确行为吗?如果是,是否有一种方法可以覆盖此行为以强制执行顺序?

如果我没有正确解释,请告诉我...

entity-framework-4 ef4-code-only ef-code-first dbcontext

11
推荐指数
1
解决办法
3954
查看次数