【发布时间】:2012-05-02 22:54:38
【问题描述】:
我已经使用我的 MVC 应用程序工作了几个星期,对模型进行更改和重建等。现在,在最近对数据注释进行更改之后,尽管在 global.asax 中有策略,但我的数据库没有重新生成Application_Start 上的文件
所以,我从 sql express 中手动删除了数据库,认为它会在我构建时创建一个新数据库。没有。
这是我的启动代码:
protected void Application_Start()
{
Models.cummins_sqldb c = new Models.cummins_sqldb();
c.Database.Initialize(true);
System.Data.Entity.Database.SetInitializer(new System.Data.Entity.CreateDatabaseIfNotExists<cummins_db.Models.cummins_sqldb>());
System.Data.Entity.Database.SetInitializer(new System.Data.Entity.DropCreateDatabaseIfModelChanges<cummins_db.Models.cummins_sqldb>());
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
}
我在 web.config 文件中有连接字符串。
有什么建议可以尝试吗?
【问题讨论】:
-
你对模型做了什么样的改变?
-
基本上我添加了一些字段、一些数据注释和一个导航属性
-
那是相当混乱的代码。您只能为每个上下文类型设置一个初始化程序,因此第一个
SetInitializer调用是多余的。调用Database.Initialize将执行初始化,因此如果您的初始化程序在此调用之后设置,它也是多余的。无论如何,它很可能不是您问题的根源。 -
是的,很乱。我在尝试不同的东西。所以,这只是我的愚蠢和新手综合症。我没有意识到 EF 会在控制器第一次请求它时从模型中重新生成数据库。
标签: asp.net-mvc-3 entity-framework-4 ef-code-first