例如,在添加migration;在添加迁移时,如mig 1, mig 2, mig3,种子数据(相同的数据)在每次添加期间一次又一次地添加到数据库中,我可以防止这种情况并一次只添加一个种子数据数据并添加尽可能多的迁移吗?
。Net Core Web Api
public async void Configure(EntityTypeBuilder<AppRole> builder)
{
AppRole role1 = await _roleManager.FindByNameAsync("USER");
AppRole role2 = await _roleManager.FindByNameAsync("ADMIN");
AppRole role3 = await _roleManager.FindByNameAsync("SUPER USER");
if (role1 != null && role2 != null && role3 != null)
{
return;
}
builder.HasData(
new AppRole { Id = Guid.NewGuid().ToString(), Name = "super user", NormalizedName = "SUPER USER" },
new AppRole { Id = Guid.NewGuid().ToString(), Name = "admin", NormalizedName = "ADMIN" },
new AppRole { Id = Guid.NewGuid().ToString(), Name = "user", NormalizedName = "USER" }
);
}
模型播种数据有一些限制。
- 主键值需要指定,即使它通常是由数据库生成的。它将用于检测迁移之间的数据更改
在您的示例中,每次使用guide . newguid()创建一个键。
或者,您可以使用context.Database.EnsureCreated()来创建一个包含种子数据的新数据库,例如用于测试数据库,或者当使用内存提供程序或任何非关系数据库时。注意,如果数据库已经存在,则EnsureCreated()既不会更新模式,也不会在数据库中播种数据。对于关系数据库,如果您计划使用Migrations
,则不应该调用EnsureCreated()