欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

18.翻译系列:EF 6 Code-First 中的Seed Data(种子数据或原始测试数据)【EF 6 Code-First系列】

程序员文章站 2022-03-13 17:52:02
原文链接:https://www.entityframeworktutorial.net/code-first/seed-database-in-code-first.aspx 你可以在数据库初始化的过程中,插入数据到数据库。当你想要给你的应用程序设置一些测试数据或者一些基本数据,这是很重要的一个方 ......

原文链接:

你可以在数据库初始化的过程中,插入数据到数据库。当你想要给你的应用程序设置一些测试数据或者一些基本数据,这是很重要的一个方法。

为了插入原始数据到数据库,你需要创建一个自定义的数据库初始化策略,并且重写seed方法。

下面的代码,展示了当数据库初始化的时候,向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" });

        context.standards.addrange(defaultstandards);

        base.seed(context);
    }
}

然后,在上下文类中设置自定义的数据库初始化策略类;

public class schoolcontext: dbcontext 
{
    public schoolcontext(): base("schooldb") 
    {
        database.setinitializer(new schooldbinitializer());
    }
    
    public dbset<student> students { get; set; }
    public dbset<standard> standards { get; set; }
}