一、目的:了解EntityFrameWorkCore迁移添加初始种子数据的方法
二、步骤:
迁移部分请参考EntityframeWorkCore应用MySql做数据迁移部分
1、在DataContext中重写OnModelCreating方法
public class DataContext : DbContext
{
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseMySQL("server=localhost;userid=root;pwd=123456;port=3306;database=test;sslmode=none;");
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<City>().HasData(
new City{Id = 1,Name = "成都"}, new City {Id =5,Name = "北京" });
}
public DbSet<City> Citys { get; set; }
}
其中, modelBuilder.Entity<City>().HasData( new City{Id = 1,Name = "成都"}, new City {Id =5,Name = "北京" });部分既是要添加的初始种子数据
2、在程序包管理器中执行add-migration initcitydata命令
输出如下:To undo this action, use Remove-Migration.标识生成代码执行成功
3、在程序包管理器中执行update-database命令
输出如下:
Applying migration '20190513104003_changehasdata'.
Done.
并检查数据库中数据是否被初始化,如数据正常表示更新数据库操作陈宫
如果在生产环境上不同版本数据库字段有修改该如何更新,可以在DbContext初始化时增加
Database.SetInitializer(new MigrateDatabaseToLatestVersion<OrderContext, Configuration>());
示例地址:https://github.com/HeBianGu/.NetCore-LearnDemo.git