在迁移中更新大表

时间:2017-07-25 10:47:35

标签: c# oracle entity-framework

我已创建迁移以更新一列中的值。迁移如下:

public partial class UpdateStatuses : DbMigration
{
    public override void Up()
    {
        var updateSql = @"
            BEGIN
                UPDATE ARTICLE SET STATUS = CASE WHEN STATUS <> -1 THEN STATUS + 1 ELSE STATUS END,
                    STATUSPREV = CASE WHEN STATUSPREV <> -1 THEN STATUSPREV + 1 ELSE STATUSPREV END;
            END;";
        Sql(updateSql, true);
    }

    public override void Down()
    {
        var updateSql = @"
            BEGIN
                UPDATE ARTICLE SET STATUS = CASE WHEN STATUS <> -1 THEN STATUS - 1 ELSE STATUS END,
                    STATUSPREV = CASE WHEN STATUSPREV <> -1 THEN STATUSPREV - 1 ELSE STATUSPREV END;
            END;";
        Sql(updateSql, true);
    }
}

迁移适用于较小的数据集,但此迁移设计为运行的表具有~11M的记录。因此,当我运行它时,它会抛出我的异常:

引擎任务ErrorOracle.ManagedDataAccess.Client.OracleException(0x00001FF1):ORA-08177:无法序列化此事务的访问权限 ORA-06512:第3行

我可以用这个做点什么吗?

0 个答案:

没有答案