【问题标题】:MVC in ASP 4.5, RecreateDatabaseIfModelChangesASP 4.5 中的 MVC,RecreateDatabaseIfModelChanges
【发布时间】:2016-02-17 14:48:10
【问题描述】:

我正在尝试将其设置为自动刷新数据库。我在这里阅读了其他帖子,并尝试了解决方案,但我无法让它发挥作用。我正在使用 ASP.NET Framework 4.5。我只添加了 3 个模型及其控制器,但我无法在 Web 浏览器中访问它们。从我读到的内容来看,这是因为当我对控制器进行任何更改时,数据库没有正确同步。我已经使用 Enable-Migrations 尝试了包管理器控制台,我已经进入 Global.asax.cs、Application_Start(),并输入:

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

我的数据库和项目被称为 This,因为它只是我即将推出的项目的游戏演示。在数据连接下,它将我的数据库列为 ThisContext (This),所以我也使用/尝试过:

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

【问题讨论】:

  • 那么您遇到的具体问题是什么?模型更改时不是重新创建数据库吗?或者您的网页无法正常工作?
  • 我收到以下错误(这没有我在 Application_Start() 中提到的代码)“EntityFramework.dll 中发生‘System.InvalidOperationException’类型的异常,但未在用户代码中处理附加信息:支持 'ThisContext' 上下文的模型自创建数据库以来发生了变化。考虑使用 Code First Migrations 更新数据库“所以我进入并尝试添加 Database.SetInitializer(new DropCreateDatabaseIfModelChanges() );,但我在尝试引用的数据库下出现红色错误行,“This”。

标签: c# asp.net .net asp.net-mvc asp.net-mvc-4


【解决方案1】:

要使用自动迁移,您必须遵循以下步骤:

每次模型更改后,转到包管理器控制台并添加新迁移

add-migration MigrationName

在配置类中设置 AutomaticMigrationsEnabled = false;

 public Configuration()
    {
        AutomaticMigrationsEnabled = false;
        ContextKey = "ReferresManager.Models.ApplicationDbContext";
    }

在 Global.asax 上设置

protected void Application_Start()
{
        var migrator = new DbMigrator(new Configuration());
        migrator.Update();

        AreaRegistration.RegisterAllAreas();

【讨论】:

  • 我在 DbMigrator 下收到错误,“找不到类型或命名空间名称 'DbMigrator'。”
  • 你需要使用 System.Data.Entity.Migration;
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-26
  • 2012-08-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-12
相关资源
最近更新 更多