Entity Framework 7 Identity Seed

c# entity-framework entity-framework-core

Pregunta

Estamos utilizando Code First con EF7 y me gustaría agregar una columna que tenga una semilla de identidad que comience con otro valor distinto a 1.

Actualmente podemos configurarlo para que se incremente automáticamente a través de EntityTypeBuilder durante las migraciones usando:

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

Sin embargo no puedo descubrir cómo cambiar la semilla de identidad. ¿Todavía necesita actualizarse como lo fue con otras versiones de EF? Por ejemplo, escribir algunos sql personalizados y ejecutar esto durante la migración?

Cómo sembrar la identidad valor de semilla en el código del marco de la entidad primero para varias tablas

¿Cómo establezco la semilla de identidad en una columna de ID utilizando primero el código de Entity Framework 4 con SQL Compact 4?

En EF7 no parece haber código para SqlServerMigrationSqlGenerator > override Generate(AltherTableOperation alterTableOperation) ?

Respuesta aceptada

En Entity Framework Core, use el comando Sql Command 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");
        }
    }
}

Respuesta popular

Sí, debe escribir la instrucción SQL requerida para establecer la semilla y luego usar el método Sql en la migración.




Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué