You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

EF Core Code First迁移Oracle 11创建Identity列表报错及解决

EF Core Code First迁移Oracle 11时Identity列报错的解决方法

问题场景

使用EF Core Code First迁移向Oracle 11数据库创建包含Identity列的表,执行add-migration后生成的迁移代码如下:

migrationBuilder.CreateTable(
    name: "Provinces",
    ////schema: "some schema",
    columns: table => new
    {
        Id = table.Column<int>(type: "NUMBER(10)", nullable: false)
            .Annotation("Oracle:Identity", "START WITH 1 INCREMENT BY 1"),
        Title = table.Column<string>(type: "NVARCHAR2(255)", maxLength: 255, nullable: false),
        Code = table.Column<string>(type: "NVARCHAR2(10)", maxLength: 10, nullable: false),
        Deleted = table.Column<bool>(type: "NUMBER(1)", nullable: false)
    },
    constraints: table =>
    {
        table.PrimaryKey("PK_Provinces", x => x.Id);
    });

运行迁移时出现错误提示:missing always keyword for identity column creation

解决方法

无需手动修改迁移代码,只需在数据库配置中设置SQL兼容性版本为Oracle 11对应的版本即可。

具体配置示例(以DbContext的OnConfiguring方法为例):

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
    optionsBuilder.UseOracle("你的数据库连接字符串", 
        oracleOptions => oracleOptions.UseSQLCompatibility(OracleSQLCompatibility.DatabaseVersion11));
}

说明

Oracle 11与12c及以上版本的Identity列语法存在差异,EF Core默认生成适配高版本的语法。通过指定SQLCompatibility为DatabaseVersion11,EF Core会自动生成符合Oracle 11要求的Identity列创建语句,无需手动调整迁移代码。

内容的提问来源于stack exchange,提问作者KoolKabin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 03:05:09