2011-05-12 17 views
28

Tengo una clase de entidadCódigo EF Primero: cómo establecer la identidad de la semilla?

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

he puesto el campo ID como la clave principal con la generación automática de números

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

Pero quiero que la identidad de semilla de 10000 en lugar de desde 1, que es el valor por defecto. ¿Cómo puedo especificar esto en EF?

+0

Debe especificarlo cuando está creando la tabla – Saleh

+2

@LIghtWing. El Código EF primero crea la tabla automáticamente para usted. La pregunta es cómo lograr que EF establezca el valor inicial para usted cuando se crea la tabla, no cómo hacerlo manualmente. –

+0

Oh, quieres EF crear tu mesa.ok veo. – Saleh

Respuesta

32

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

+5

Código primero, SQL específico de la base de datos Last;) – Baldy

+10

El código primero se basa en el hecho de que no tiene absolutamente ningún requisito en la base de datos. Si tiene requisitos, debe introducir SQL específico de la base de datos. –

9

Sobre la base de la respuesta de Ladislav Mrnka, se podría añadir esto en su archivo de migración Up método:

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

Gracias por la solución que trabaja con VS solo en lugar de SQL Server que requiere más esfuerzos de implementación. –

+0

en mi humilde opinión - Esta debería ser la respuesta aceptada. Es la forma más 'Código Primero' de hacerlo. Ponga toda la lógica de construcción de la base de datos en las migraciones para que no haya nada que olvidar cuando reconstruya los días/semanas/meses posteriores. –

0

basado en @ ehsan88 se puede hacer una base de datos Inicializar clase

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

gracias

Cuestiones relacionadas