Entity Framework Core 2.1 has a nice little feature for seed data. Previously, seeding data quite often involved a series of checks and potential for a script to exist that, if run on the wrong data, would repeatedly re-generate the same seed data.
In 2.1, you can simply override the OnModelCreating function of the data context, like so:
public class ApplicationDbContext : DbContext
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{
}
public DbSet<ResourceType> ResourceType { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<ResourceType>().HasData(new Data.ResourceType()
{
Id = 1,
Name = "Web Site"
});
}
And the framework will calculate whether or not this needs to run to put the data into the state that you’ve requested.
References
https://docs.microsoft.com/en-us/ef/core/modeling/data-seeding