我想更改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
您可能需要禁用初始化程序。我关闭了它,因为我更喜欢维护我的数据库和代码。例如
Database.SetInitializer<Entities>( null );
如果你想的话,你也可以保持模型名称的原样,并在模型中明确指定表名,例如:
[Table( "NewTableName" )]
internal class OldTableName
{
....
}