EF Code First - 如何设置身份种子?

Ach*_*khi 31 .net c# ef-code-first entity-framework-4.1

我有一个实体类

public class Employee
{
    public long Id { get; set; }
    public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我已将Id字段设置为具有自动编号生成的主键

modelBuilder.Entity<Employee>().HasKey(e => e.Id);
modelBuilder.Entity<Employee>().Property(e => e.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
Run Code Online (Sandbox Code Playgroud)

但我希望Identity从10000而不是从1开始播种,这是默认值.如何在EF中指定?

Lad*_*nka 32

如果您使用的是SQL Server,则必须创建自定义数据库初始化程序并手动执行DBCC CHECKIDENT ('TableName', RESEED, NewSeedValue).要使用自定义SQL命令创建和使用自定义初始化程序,请检查此答案.

  • 代码优先基于您对数据库完全没有要求的事实.如果您有要求,则必须引入特定于数据库的SQL. (10认同)
  • 代码优先,数据库特定SQL最后;) (7认同)

Ehs*_*n88 15

根据Ladislav Mrnka的回答,您可以在迁移文件Up方法中添加:

Sql("DBCC CHECKIDENT ('TableName', RESEED, NewSeedValue)");
Run Code Online (Sandbox Code Playgroud)

  • 恕我直言 - 这应该是公认的答案.它是更"'Code First'的方式.将所有数据库构建逻辑放入迁移中,以便在重建db days/weeks/months之后没有什么可忘记的. (2认同)