首次执行 update-database 命令以使用种子数据填充数据库后:
发现所有 int Id 列均以零 (0) 开头,而不是预期的一 (1)。
在 Configuration.cs 中的 Seed 方法顶部为每个实体/表添加了以下 2 行代码:
[注意:由于外键约束,我删除了后代表中的所有行,然后沿着祖先链向上移动。]
context.Database.ExecuteSqlCommand("delete from Widgets");
context.Database.ExecuteSqlCommand("DBCC CHECKIDENT ('Widgets', RESEED, 0)");
然后,我重新运行 update-database,所有 int Id 列都以一 (1) 开头。
如果我删除数据库,运行/添加初始迁移,然后运行 update-database,则所有 int Id 列都以零 (0) 开头。
就好像DBCC CHECKIDENT ('Widgets', RESEED, 0)
第一次运行 Seed 方法时,不会执行 SQL 语句。
此外,如果实体/表没有种子数据,则无论运行 update-database 命令多少次,第一次将行添加到空表时,Id 都将为零 (0)。
可能有一种方法可以在覆盖中指定 int Identity 列的初始种子值OnModelCreating
的方法IdentityModels.cs
?
Update:
改变:DBCC CHECKIDENT ('Table', RESEED, 0)
to DBCC CHECKIDENT ('Table', RESEED, 1)
在 Configuration.cs 中。
删除了数据库。
执行:update-database -TargetMigration Initial
(结果是所有以 1 开头的 int Id。)
执行中update-database
重置数据库。 (结果是所有 int Id 都以 2 开头,无论运行多少次update-database
.)