我想更改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
答案 0 :(得分:0)
如错误所示,您应为Asp.Net Identity Application DbContext启用Migration
以反映对数据库的更改。
要开始在项目中使用迁移,请转到工具 - &gt;在Visual Studio中选择菜单,然后选择Library Package Manager-&gt;包管理器控制台。当控制台在屏幕底部打开时,键入:
Enable-Migrations –EnableAutomaticMigrations
一旦我们运行了如上所述的Enable-Migrations命令,我们项目的根目录下应该有一个Migrations文件夹。如果我们在该文件夹中打开Configuration.cs文件:
namespace DbMigrationExample.Migrations
{
using System;
using System.Data.Entity;
using System.Data.Entity.Migrations;
using System.Linq;
internal sealed class Configuration
: DbMigrationsConfiguration<DbMigrationExample.Models.ApplicationDbContext>
{
public Configuration()
{
AutomaticMigrationsEnabled = true;
}
protected override void Seed(
DbMigrationExample.Models.ApplicationDbContext context)
{
// This method will be called after migrating to the latest version.
// You can use the DbSet<T>.AddOrUpdate() helper extension method
// to avoid creating duplicate seed data. E.g.
//
// context.People.AddOrUpdate(
// p => p.FullName,
// new Person { FullName = "Andrew Peters" },
// new Person { FullName = "Brice Lambson" },
// new Person { FullName = "Rowan Miller" }
// );
//
}
}
}
有关更多信息,请参阅以下文章: Code-First Migration and Extending Identity Accounts in ASP.NET MVC 5 and Visual Studio 2013
答案 1 :(得分:0)
您可能想要禁用初始值设定项。我把它关掉了,因为我更喜欢维护我的数据库和代码。 例如。
Database.SetInitializer<Entities>( null );
如果需要,您还可以保留模型名称,并在模型中明确指定表名称,例如:
[Table( "NewTableName" )]
internal class OldTableName
{
....
}