Проект выполняется с использованием .Net Core 2.2, EF Core и SQL Server. Теперь мне нужно использовать этот же проект с Oracle 11g. Я создаю новый проект миграции с 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. PK должны быть сгенерированы с помощью триггера и последовательности.
Как настроить EF Core для генерации команд для Oracle версии 11g?