DropCreateDatabaseIfModelChanges()不起作用

时间:2012-12-01 16:41:36

标签: asp.net-mvc-4

我正在使用MVC 4和EF Code First 5.我有点新,所以我只是从默认模板创建一个项目。

项目正在与数据库通信并且记录持续存在。我们在工作中使用DropCreateDatabaseIfModelChanges,并且我正在尝试使用默认模板项目。我发现SetInitializer在模板项目的SimpleMembershipInitializer中调用,并且一直在尝试使用它:

            Database.SetInitializer<NPContext>(new DropCreateDatabaseIfModelChanges<NPContext>());

而不是

            Database.SetInitializer<NPContext>(null);

它不起作用 - 信息仍将保留在数据库中,但不会删除并使用新架构重新创建。我还尝试在Application_Start()中设置初始化程序。在调试模式下,我没有崩溃或可见错误。

我对设置我正在使用的工具并不是非常熟悉,我尝试了设置数据库权限(我正在使用SQLEXPRESS,但我确实有SQL Management Studio 2012),但不确定是什么用户将是或设置的权限。

有人能引导我朝着正确的方向前进吗?我正在转动轮子并浪费时间。

1 个答案:

答案 0 :(得分:0)

以下是我在使用Application_Start()的应用程序中执行此操作的方法。首先,我有一个初始化类,它在重新创建数据库时处理种子:

public class MyContextInitializer : DropCreateDatabaseIfModelChanges<MyContext>
{
    // Seed your database or anything else you want to do
}

然后在Application_Start()设置初始化程序:

Database.SetInitializer(new MyContextInitializer());