Entity Framework Core -- 種子資料
阿新 • • 發佈:2020-08-24
種子資料:為我們的資料庫表新增初始資料,就稱之為種子資料,就是使用codefirst開發模式,採用EntityFramek Core遷移命令的時候,對資料庫表初始化一條資料,或者多條資料
這樣做有利於後期維護,保持專案實體類的版本和資料庫表版本同步,如果哪天把實體類中某一個欄位的型別給改了,這個時候種子資料會報錯,提示我們資料庫也要同步修改。
新建一個類,取名為ModelBuilderExtensions.cs:
public static class ModelBuilderExtensions { public static void Send(this ModelBuilder modelBuilder) { modelBuilder.Entity<Student>().HasData(new Student { Id = 5, FirstName = "哈哈哈", LastName = "嘿嘿嘿", BirthDate = System.DateTime.Now, Gender = Gender.其它 }); } }
因為這是擴充套件方法,使用靜態的比較好,可以直接呼叫,然後在Context類裡初始化呼叫:
public class DataContext:DbContext { public DataContext(DbContextOptions<DataContext> contextOptions):base(contextOptions) { } public DbSet<Student> Student { get; set; } protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Send(); } }
然後執行:
add-migration addSendSource
更新資料庫:
update-database
這樣,在遷移過程中,種子資料就會轉化為相應的sql語句,為相應表新增相應的資料。