实体框架:程序启动时仅创建一次包含数据的字典表

问题描述 投票:0回答:1

我正在使用实体框架创建一个 .NET 应用程序。我想知道如何创建一个字典表并向其中插入一些数据。我的意思是,它将包含一些静态数据,以便不将其保留在 C# 代码中。我知道有一种称为播种数据的技术,但我认为它更多的是用于插入测试数据,但我最终会使用它。你能给我一些建议吗?

c# .net entity-framework
1个回答
0
投票

您可以使用以下代码来播种数据:

public class ApplicationDbContext : DbContext
{
    public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options)
    {
    }

    public DbSet<Customer> Customers { get; set; }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);

        modelBuilder.ApplyConfigurationsFromAssembly(typeof(ApplicationDbContext).Assembly);

        modelBuilder.Entity<Customer>().HasData(SeedCustomers);
    }

    private static readonly Customer[] SeedCustomers =
    {
        new Customer(){ CustomerId = Guid.NewGuid(), Name = "Some name"},
        new Customer(){ CustomerId = Guid.NewGuid(), Name = "Some name1"},
    };
}
© www.soinside.com 2019 - 2024. All rights reserved.