Primer código EF: ¿cómo establecer la identidad de la semilla?

Tengo una clase de entidad

public class Employee { public long Id { get; set; } public string Name { get; set; } } 

Establecí el campo Id como clave principal con la generación automática de números

 modelBuilder.Entity().HasKey(e => e.Id); modelBuilder.Entity().Property(e => e.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity); 

Pero quiero que la Identidad se inicie desde 10000 en lugar de partir de 1, que es el valor predeterminado. ¿Cómo puedo especificar esto en EF?

Si está utilizando SQL Server, debe crear un inicializador de base de datos personalizado y ejecutar DBCC CHECKIDENT ('TableName', RESEED, NewSeedValue) manualmente DBCC CHECKIDENT ('TableName', RESEED, NewSeedValue) . Para crear y usar un inicializador personalizado con comandos SQL personalizados, marque esta respuesta .

En función de la respuesta de Ladislav Mrnka, puede agregar esto en su archivo de migración Método de actualización:

 Sql("DBCC CHECKIDENT ('TableName', RESEED, NewSeedValue)"); 

basado en @ ehsan88 puedes hacer una clase Initialize Database

  public class AccDatabaseInitializer : CreateDatabaseIfNotExists { protected override void Seed(YourContect context) { context.Database.ExecuteSqlCommand("DBCC CHECKIDENT ('TableName', RESEED, NewSeedValue)"); context.SaveChanges(); } } 

Gracias

Definitivamente puede obtener el mismo resultado que la semilla de identidad que es 1000 ejecutando el script “DBCC CHECKIDENT (‘TableName’, RESEED, NewSeedValue)” desde el método Up de secuencia de comandos de migración.

Sin embargo, la definición de tabla en SQL Server aún muestra “IDENTIDAD (1,1)”, aunque el primer registro ingresado en la tabla obtiene una ID 1000. Esto significa que la semilla de identidad de la tabla en realidad no se ha establecido en 1000. Es solo que los valores iniciales de 999 se consumen o se saltan al crear el primer registro, por supuesto porque está disparando el comando RESEED al DB, es decir, está cambiando el SEED que ya se ha configurado.

Para concluir, parece que, en EF core v2.1, Microsoft no ha proporcionado la provisión de personalización del valor inicial de identidad al crear la tabla. Esperemos que las futuras versiones de EF Core, probablemente 2.2 o 3.0 tendrán esta característica. Pensamientos …?