如何在需要时通过配置文件和种子设置EF上下文初始化?

时间:2014-07-26 12:27:57

标签: entity-framework initialization configuration-files seeding

我正在使用Entity Framework 6.1,并希望通过配置文件设置初始化。同时,当配置文件中的设置是丢弃并(重新)创建数据库的设置时,我想运行种子方法。

除非我弄错了,否则只有在通过代码设置初始化程序时才会调用Seed方法。有什么方法可以指定在配置文件(或其他)中运行什么初始化程序,以便在配置文件对要删除和创建的数据库进行分类时运行Seed方法?

如果没有,建议使用其他选项?

1 个答案:

答案 0 :(得分:1)

您可以将其放在DbContext构造函数中,如下所示。

public class AppContext : DbContext
{
    public AppContext()
    {
        if (ConfigurationManager.AppSettings["Initializer"] == "DropAlways")
        {
            Database.SetInitializer(new DropCreateDatabaseAlways<AppContext>());
        }
        else if (ConfigurationManager.AppSettings["Initializer"] == "DropIfModelChanges")
        {
            Database.SetInitializer(new DropCreateDatabaseIfModelChanges<AppContext>());
        }
        else
        {
            Database.SetInitializer(new CreateDatabaseIfNotExists<AppContext>());
        }
    }
}