该项目使用.Net Core2.2、EF和Server运行。现在,我需要在Oracle 11g中使用同样的projetc。我用Oracle.ManagedDataAccess.Core创建了一个新的迁移项目。生成的迁移文件如下:
migrationBuilder.CreateTable(
name: "AREAATUACAO",
schema: "SISDETEC",
columns: table => new
{
ID = table.Column<long>(nullable: false)
.Annotation("Oracle:ValueGenerationStrategy", OracleValueGenerationStrategy.IdentityColumn),
DATACADASTRO = table.Column<DateTime>(nullable: false),
DATAATUALIZACAO = table.Column<DateTime>(nullable: false),
NOME = table.Column<string>(nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_AREAATUACAO", x => x.ID);
});生成的脚本是:
BEGIN
EXECUTE IMMEDIATE 'CREATE TABLE
"SISDETEC"."AREAATUACAO" (
"ID" NUMBER(19) GENERATED BY DEFAULT ON NULL AS IDENTITY NOT NULL,
"DATACADASTRO" TIMESTAMP(7) NOT NULL,
"DATAATUALIZACAO" TIMESTAMP(7) NOT NULL,
"NOME" NVARCHAR2(2000),
CONSTRAINT "PK_AREAATUACAO" PRIMARY KEY ("ID")
)';
END;但是,在Oracle 11g中不存在IDENTITY命令。PKs必须使用触发器和序列生成。
如何配置de以生成Oracle版本11g的命令?
发布于 2019-11-19 02:41:17
使用OracleDatabase11.2版本的
客户应该设置
UseOracleSQLCompatibility("11")
optionsBuilder.UseOracle("User Id=hr;Password=<password>;Data Source = inst1", b =>
b.UseOracleSQLCompatibility("11"));https://stackoverflow.com/questions/58541631
复制相似问题