EF Core всегда создает .Annotation ("SqlServer: Identity", "1, 1") при адд-миграции - PullRequest
0 голосов
/ 10 января 2020

У меня проблема с Migration EF Core.

Чтобы прояснить сценарий, я назначаю его существующей базе данных, которая с этого момента предназначена для использования миграции для управления базой данных. Но у меня возникают трудности.

То, что я сделал до сих пор.

  1. Я создал леса из существующей базы данных.

  2. Я добавил миграцию, поэтому она сгенерировала все «Вверх» для создания базы данных.

  3. В чистой базе данных запустил update-database.

Пока идеально все заработало как положено. Но начиная с этого шага каждый раз, когда я генерирую новую миграцию, он (миграция) настаивает на создании оператора Alter Column для всех таблиц. Например:

  migrationBuilder.AlterColumn<int>(
            name: "rac_n_codigo",
            table: "tb_rac_raca",
            nullable: false,
            oldClrType: typeof(int),
            oldType: "int")
            .Annotation("SqlServer:Identity", "1, 1");

Таблица создания

  migrationBuilder.CreateTable(
            name: "tb_rac_raca",
            columns: table => new
            {
                rac_n_codigo = table.Column<int>(nullable: false)
                    .Annotation("SqlServer:Identity", "1, 1"),
                rac_c_nome = table.Column<string>(unicode: false, nullable: true),
                rac_d_alteracao = table.Column<DateTime>(type: "date", nullable: true),
                rac_c_usuario = table.Column<string>(unicode: false, nullable: true),
                rac_c_tipo = table.Column<string>(unicode: false, nullable: true),
                rac_d_modificacao = table.Column<DateTime>(type: "datetime", nullable: true),
                rac_c_unique = table.Column<Guid>(nullable: false, defaultValueSql: "(newid())"),
                rac_d_atualizado = table.Column<DateTime>(type: "datetime", nullable: false, defaultValueSql: "(getdate())"),
                rac_d_inclusao = table.Column<DateTime>(type: "datetime", nullable: false, defaultValueSql: "(getdate())")
            },
            constraints: table =>
            {
                table.PrimaryKey("PK_tb_rac_raca", x => x.rac_n_codigo);
            });

1 Ответ

0 голосов
/ 20 марта 2020

Предполагается, что вы используете Core 3.0 или Core 3.1!

Добавить пакет Microsoft.EntityFrameworkCore.Relational

Кроме того, вам может понадобиться явно указать столбец идентификаторов в сопоставлении.

builder.Property(o => o.Id).ValueGeneratedOnAdd().UseIdentityColumn();
...