【问题标题】:Trying to change the names of Asp.net Identity tables MVC5尝试更改 Asp.net Identity 表 MVC5 的名称
【发布时间】:2014-12-22 06:07:42
【问题描述】:

我想更改 ap.net 身份表的默认名称。我脑子里有几个问题

1) 如果表已经创建并且有一些数据,这是否可能

2)我们可以只更改表的名称并保持数据不变

我试过这段代码:

protected override void OnModelCreating(System.Data.Entity.DbModelBuilder modelBuilder)
{
    base.OnModelCreating(modelBuilder);

    modelBuilder.Entity<IdentityUser>().ToTable("MyUsers").Property(p => p.Id).HasColumnName("UserId");
    modelBuilder.Entity<ApplicationUser>().ToTable("MyUsers").Property(p => p.Id).HasColumnName("UserId");
    modelBuilder.Entity<IdentityUserRole>().ToTable("MyUserRoles");
    modelBuilder.Entity<IdentityUserLogin>().ToTable("MyUserLogins");
    modelBuilder.Entity<IdentityUserClaim>().ToTable("MyUserClaims");
    modelBuilder.Entity<IdentityRole>().ToTable("MyRoles");
}

但它会抛出模型支持上下文已更改错误

The model backing the 'ApplicationDbContext' context has changed since the database was created. Consider using Code First Migrations to update the database

【问题讨论】:

  • 你得到什么错误?发布错误。
  • &lt;ApplicationUser&gt; 行(向下第 2 行)尤其重要,如果您不想在其中只有一个 ID 有一个悬空的 AspNetUsers 表。该行将 ApplicationUser 重新聚焦到新的 MyUsers 表。

标签: c# asp.net-mvc-5 asp.net-identity


【解决方案1】:

您可能想要禁用初始化程序。我把它关掉了,因为我更喜欢维护我的数据库和代码。 例如。

Database.SetInitializer<Entities>( null );

如果您愿意,也可以保持模型名称不变,并在模型中明确指定表名,例如:

[Table( "NewTableName" )]
internal class OldTableName
{
    ....
}

【讨论】:

    猜你喜欢
    • 2014-09-05
    • 1970-01-01
    • 1970-01-01
    • 2013-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-04
    • 1970-01-01
    相关资源
    最近更新 更多