EF Code First - как установить идентификационное семя?
У меня есть класс сущности
public class Employee
{
public long Id { get; set; }
public string Name { get; set; }
}
Я установил поле Id в качестве первичного ключа с генерацией автоматического номера
modelBuilder.Entity<Employee>().HasKey(e => e.Id);
modelBuilder.Entity<Employee>().Property(e => e.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
Но я хочу, чтобы Identity начинал с 10000 вместо 1, который является значением по умолчанию. Как я могу указать это в EF?
Ответы
Ответ 1
Если вы используете SQL Server, вы должны создать собственный инициализатор базы данных и вручную выполнить DBCC CHECKIDENT ('TableName', RESEED, NewSeedValue)
. Для создания и использования пользовательского инициализатора с пользовательскими командами SQL проверьте этот ответ.
Ответ 2
На основании ответа Ladislav Mrnka вы можете добавить это в свой файл миграции Up
:
Sql("DBCC CHECKIDENT ('TableName', RESEED, NewSeedValue)");
Ответ 3
на основе @ehsan88 вы можете создать класс инициализации базы данных
public class AccDatabaseInitializer : CreateDatabaseIfNotExists<YourContect>
{
protected override void Seed(YourContect context)
{
context.Database.ExecuteSqlCommand("DBCC CHECKIDENT ('TableName', RESEED, NewSeedValue)");
context.SaveChanges();
}
}
спасибо