【问题标题】:Rename ASP.Net Identity 2.0 Tables: Context has changed since the database was created重命名 ASP.Net Identity 2.0 表:自数据库创建以来上下文已更改
【发布时间】:2016-07-15 21:55:35
【问题描述】:

我已经有了我的数据库,我需要使用 ASP.Net Identity 2.0。所以我做了以下事情:

获取身份表的SQL Script:

  • 使用身份验证个人用户帐户创建 MVC 项目
  • 然后,为在默认连接下创建的数据库编写脚本

然后,我将它与我现有的数据库集成:

  • 将脚本表插入到 SQL Server 中的现有数据库中 管理工作室。

生成我的身份数据库后,我开始使用 EF Migrations for DB First 将必要的列添加到表“ASPNetUsers”中。

  • 我使用数据库优先方法创建了一个新的 MVC 项目
  • 现在,我在 web.config 中有 2 个连接字符串

因此,我的数据库中有 Asp.Identity 表,我的应用程序中有 ER 模型。

然后,我开始添加新属性:

  public class ApplicationUser : IdentityUser
{
    public string Name { get; set; }

    public virtual Region Region { get; set; }
}

添加每个属性后,我执行了迁移命令:Add-Migration 和 Update-Database。

然后,我尝试使用填充的添加列注册新用户,一切正常。

但是,我需要更改表的名称,所以我使用了 Fluent API:

  protected override void OnModelCreating(System.Data.Entity.DbModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);
        modelBuilder.Entity<ApplicationUser>().ToTable("Account");

    }

在运行应用程序并尝试创建新用户时,出现以下错误:

【问题讨论】:

  • 添加流畅重命名后是否运行过Add-Migration和Update-Database?
  • 我不确定这是解决此问题的正确方法。因此,请在备份 db 后尝试一次。找到名为 _migrationhistory 或类似名称的表并删除其内容。

标签: c# asp.net-mvc asp.net-identity ef-database-first


【解决方案1】:

您似乎还没有更新您的模型。 如果您使用 Code First,请按照

上的说明进行操作

http://www.asp.net/mvc/overview/getting-started/getting-started-with-ef-using-mvc/migrations-and-deployment-with-the-entity-framework-in-an-asp-net-mvc-application

基本上在包管理器控制台中执行这些命令:

  1. 启用迁移

  2. 添加迁移初始创建

  3. 更新数据库

如果您需要在第一次迁移后进行更改,您应该执行:

  1. 添加迁移

  2. 更新数据库

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-19
    • 2011-04-05
    • 2015-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-21
    相关资源
    最近更新 更多