【问题标题】:MVC 3 Code First EF not regenerating my database from the modelMVC 3 Code First EF 没有从模型中重新生成我的数据库
【发布时间】: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


【解决方案1】:

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

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

  // 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章),希望对你有帮助

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

哦,伙计,我现在看到了询问的日期,希望它对其他人有所帮助... :))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多