Identity Entity Framework 7

c# entity-framework entity-framework-core

Domanda

Stiamo usando Code First con EF7 e vorrei aggiungere una colonna con un Identity Seed che inizia con un altro valore diverso da 1.

Attualmente possiamo impostare l'incremento automatico tramite EntityTypeBuilder durante le migrazioni utilizzando:

entityBuilder.Property(e => e.PropertyName).ValueGeneratedOnAdd();

Tuttavia non riesco a scoprire come modificare il seed di identità. Ha ancora bisogno di essere aggiornato come era con altre versioni di EF? ad esempio scrivendo alcuni sql personalizzati e eseguendoli durante la migrazione?

Come seminare il valore del seme di identità nel codice del framework di entità prima per diverse tabelle

Come posso impostare il seme Identity su una colonna ID utilizzando il codice Entity Framework 4 prima con SQL Compact 4?

In EF7 non sembra esserci codice per SqlServerMigrationSqlGenerator > override Generate(AltherTableOperation alterTableOperation) ?

Risposta accettata

In Entity Framework Core Utilizzare il comando Sql in Up :

Parte importante: migrationBuilder.Sql("DBCC CHECKIDENT ('Payment', RESEED, 1000000)");

using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Migrations;
using System;

namespace PaymentService.Migrations
{
    public partial class Initial : Migration
    {
        protected override void Up(MigrationBuilder migrationBuilder)
        {
            migrationBuilder.CreateTable(
            name: "Payment",
            columns: table => new
            {
                Id = table.Column<int>(nullable: false)
                          .Annotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn)
            },
            constraints: table =>
            {
                table.PrimaryKey("PK_Payment", x => x.Id);
            });

            // Below code is for seeding the identity
            migrationBuilder.Sql("DBCC CHECKIDENT ('Payment', RESEED, 1000000)");
        }

        protected override void Down(MigrationBuilder migrationBuilder)
        {
            migrationBuilder.DropTable(name: "Payment");
        }
    }
}

Risposta popolare

Sì, è necessario scrivere l'istruzione SQL richiesta per impostare il seed e quindi utilizzare il metodo Sql nella migrazione.




Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché