播种 Entity Framework Core 6 + .NET6 不工作

Seeding Entity Framework Core 6 + .NET6 not working

我这样创建了 Entity Framework 上下文

public class ProductContext : DbContext
{
    public ProductContext(DbContextOptions<ProductContext> options) : base(options) { }
    public DbSet<Product> Products { get; set; }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        //
        modelBuilder.ApplyConfiguration(new ProductEntityTypeConfiguration());

        // seeding
        modelBuilder.Entity<Product>().HasData(
            new Product() { Id = 1, Name = "cola",  Price = new Money(Currency.EUR, 100) },
            new Product() { Id = 2, Name = "chips", Price = new Money(Currency.EUR, 150) },
            new Product() { Id = 3, Name = "candy", Price = new Money(Currency.EUR, 200) }
        );
        base.OnModelCreating(modelBuilder);
    }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseInMemoryDatabase(databaseName: "ProductDatabase");
        base.OnConfiguring(optionsBuilder);
    }
}


public class ProductEntityTypeConfiguration : IEntityTypeConfiguration<Product>
{
    public void Configure(EntityTypeBuilder<Product> builder)
    {
        builder.ToTable("Product");

        builder.HasKey(product => product.Id);

        builder.Property(product => product.Name)
               .HasColumnName("Name");

        builder.Property(product => product.Price)
               .HasConversion(
                   v => JsonConvert.SerializeObject(v, Formatting.Indented),
                   v => JsonConvert.DeserializeObject<Money>(v));
    }
}

我在 Program.cs

中声明了它
builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
builder.Services.AddDbContext<ProductContext>();

我不明白为什么,但一切都编译和运行没有错误。但是数据库中的数据没有播种。我可以添加记录、删除它们并使用数据库,但似乎未加载初始种子设置。我做错了什么?

在Entity Framework Core中提供了Seeding Data教程,参考Seed Data in Entity Framework Core section,您需要:

  1. Add-Migration 用于创建种子数据迁移。
PM> Add-Migration SeedInitialData
  1. 运行 Update-Database 命令将新创建的迁移应用到数据库。
PM> Update-Database