MVC 3 Code First EF不从模型重新生成我的数据库

时间:2012-05-02 22:54:38

标签: asp.net-mvc-3 entity-framework-4 ef-code-first

我已经使用我的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文件中有连接字符串。

关于我可能尝试的任何建议?

1 个答案:

答案 0 :(得分:0)

这件事发生在我身上 通常,当您在更改表定义时发生冲突时会发生这种情况 例如: 你已经在DB中有一些数据了 并将一个外键添加到表中,不能为空,将令人兴奋的表与新表关联起来

表中数据的外键字段,保持为null 它与新表定义冲突 解决方案是这样的:

  // Create  a department for course to point to.
Sql("INSERT INTO dbo.Department (Name, Budget, StartDate) VALUES ('Temp', 0.00, GETDATE())");
//  default value for FK points to department created above.
AddColumn("dbo.Course", "DepartmentID", c => c.Int(nullable: false, defaultValue: 1)); 
//AddColumn("dbo.Course", "DepartmentID", c => c.Int(nullable: false));

Tom Dykstra,有很好的解决这个问题的教程: getting-started-with-ef-5-using-mvc-4

看一下(第4章),希望这是一个帮助

之后,您可以轻松回滚上次工作的迁移 然后更新数据库 进行一些更改并再次使用您的愿望更新您的数据库

  

哦伙计,我现在看到了约会的日期,希望它可以帮助其他人... :))