首先,在ASP.NET Core 6中,数据种子不再是一种服务,而是一种独立的类。这意味着您需要手动创建一个新类,实现IEntityTypeConfiguration接口。
以下是一个示例:
public class MyDataSeedConfiguration : IEntityTypeConfiguration
{
public void Configure(EntityTypeBuilder builder)
{
builder.HasData(
new MyData { Id = 1, Name = "John" },
new MyData { Id = 2, Name = "Jane" },
new MyData { Id = 3, Name = "Bob" }
);
}
}
接下来,您需要在DbContext中添加以下代码:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.ApplyConfiguration(new MyDataSeedConfiguration());
}
现在,每当您应用迁移时,MyDataSeedConfiguration类中定义的数据将会自动种植到数据库中。
例如,运行以下命令创建和应用迁移:
dotnet ef migrations add MyMigration
dotnet ef database update
这是一个完整的示例:
public class MyDbContext : DbContext
{
public MyDbContext(DbContextOptions options) : base(options) { }
public DbSet MyDatas { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.ApplyConfiguration(new MyDataSeedConfiguration());
}
}
public class MyData
{
public int Id { get; set; }
public string Name { get; set; }
}
public class MyDataSeedConfiguration : IEntityTypeConfiguration
{
public void Configure(EntityTypeBuilder builder)
{
builder.HasData(
new MyData { Id = 1, Name = "John" },
new MyData { Id = 2, Name = "Jane" },
new MyData { Id = 3, Name = "Bob" }
);
}
}