EF Core Code First Oracle - Невозможно установить обнуляемый существующий столбец - PullRequest
2 голосов
/ 16 апреля 2020

Я установил существующее свойство decimal на decimal?:

    public decimal? TotalAmountTTC { get; set; }

Затем я создал миграцию с add-migration, она сгенерировала мне это:

        migrationBuilder.AlterColumn<decimal>(
            name: "c0003_total_amount_ttc",
            table: "t0003_transfer_request",
            type: "decimal(13,4)",
            nullable: true,
            oldClrType: typeof(decimal),
            oldType: "decimal(13,4)");

Но после того, как я выполню update-database, столбец по-прежнему будет not nullable:

enter image description here

Когда я запускаю script-migration, чтобы проверить сгенерированный SQL, мы видим, что это явно не заботит тот факт, что моя собственность теперь обнуляется:

        ALTER TABLE "t0003_transfer_request" MODIFY "c0003_total_amount_ttc" decimal(13,4)
        /

Я что-то не так делаю? Это ошибка?

Я пытался установить IsRequired(false) в отображении, но результат тот же.

         builder.Property(tr => tr.TotalAmountTTC).HasColumnName("c0003_total_amount_ttc").IsRequired(false);

1 Ответ

1 голос
/ 16 апреля 2020

Хорошо, для меня это выглядит как хак , но я нашел способ сделать NULLABLE столбец, который уже существует как NOT NULL:

Вам нужно включите NULL в тип данных (в моем случае: decimal(13,4) NULL):

    public void Configure(EntityTypeBuilder<TransferRequest> builder)
    {
        builder.Property(tr => tr.TotalAmountTTC).HasColumnType("decimal(13,4) NULL");
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...