EF数据库初始化程序

时间:2018-01-10 04:06:34

标签: c# entity-framework

我希望能够通过web.config指定是否通过EF删除整个数据库,所以我创建了一个简单的模式来执行此操作。首先,我创建了两个类,如下所示:

public class AppDbInitializerDropCreateDatabaseIfModelChanges : DropCreateDatabaseIfModelChanges<AppDbContext> {}

public class AppDbInitializerDropCreateDatabaseAlways : DropCreateDatabaseAlways<AppDbContext> {}

在每个类上,我重写Seed方法以放入数据初始值设定项

protected override void Seed(AppDbContext context) {
        //This contains all data to be initialised on the database
        new AppDbDataInitializer();
}

我通过一段代码相应地调用这些类:

public static void Initialize() {
    var dropModeConfig = ConfigurationManager.AppSettings["DatabaseDropMode"];
    var dropMode = DatabaseDropMode.NoDrop;

    if (dropModeConfig == "DropCreateDatabaseAlways")
        dropMode = DatabaseDropMode.DropCreateDatabaseAlways;

    if (dropModeConfig == "DropCreateDatabaseIfModelChanges")
        dropMode = DatabaseDropMode.DropCreateDatabaseIfModelChanges;

        Drop(dropMode);
}

这在我之前的项目中运作良好。但是在我的最新版本中,它给了我这个错误:

Declaration referenced in a method implementation cannot be a final method

甚至更奇怪的是,如果我注释掉调用我的初始化程序的代码,则会在后台调用我的DbContext类。

0 个答案:

没有答案