【译】第33节---种子数据
原文:http://www.entityframeworktutorial.net/code-first/seed-database-in-code-first.aspx
你可以在数据库初始化过程中将数据插入到数据库表中。 如果要为应用程序提供一些测试数据或为应用程序提供一些默认的主数据的话,这将非常重要。
要将数据输入到数据库中,必须创建自定义DB初始化程序,就像在数据库初始化策略中创建的那样,并重写Seed方法。
以下示例展示如何在初始化School数据库时为Standard表提供默认数据:
public class SchoolDBInitializer : DropCreateDatabaseAlways<SchoolDBContext> { protected override void Seed(SchoolDBContext context) { IList<Standard> defaultStandards = new List<Standard>(); defaultStandards.Add(new Standard() { StandardName = "Standard 1", Description = "First Standard" }); defaultStandards.Add(new Standard() { StandardName = "Standard 2", Description = "Second Standard" }); defaultStandards.Add(new Standard() { StandardName = "Standard 3", Description = "Third Standard" }); foreach (Standard std in defaultStandards) context.Standards.Add(std); base.Seed(context); } }
现在,在上下文类中设置这个DB初始化类,如下所示:
public class SchoolContext: DbContext { public SchoolContext(): base("SchoolDBConnectionString") { Database.SetInitializer(new SchoolDBInitializer()); } public DbSet<Student> Students { get; set; } public DbSet<Standard> Standards { get; set; } }