我想更改身份表的名称。我四处搜索并找到了以下方法:
第一个:
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
builder.Entity<ApplicationUser>(entity =>
{
entity.ToTable(name: "Users");
});
builder.Entity<ApplicationRole>(entity =>
{
entity.ToTable(name: "Roles");
});
builder.Entity<ApplicationRoleClaim>(entity =>
{
entity.ToTable(name: "RoleClaims");
});
builder.Entity<ApplicationUserRole>(entity =>
{
entity.ToTable(name: "UserRoles");
});
builder.Entity<ApplicationUserLogin>(entity =>
{
entity.ToTable(name: "UserLogins");
});
builder.Entity<ApplicationUserClaim>(entity =>
{
entity.ToTable(name: "UserClaims");
});
builder.Entity<ApplicationUserToken>(entity =>
{
entity.ToTable(name: "UserTokens");
});
}
第二个:
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
builder.Entity<ApplicationUser>().ToTable("Users");
builder.Entity<ApplicationRole>().ToTable("Roles");
builder.Entity<ApplicationRoleClaim>().ToTable("RoleClaims");
builder.Entity<ApplicationUserRole>().ToTable("UserRoles");
builder.Entity<ApplicationUserClaim>().ToTable("UserClaims");
builder.Entity<ApplicationUserToken>().ToTable("UserTokens");
builder.Entity<ApplicationUserLogin>().ToTable("UserLogins");
}
所有通用名称,例如Applicationuser,ApplicationRole等,都具有" Int"作为他们的主要钥匙。
applicationdbcontext 和 startup 看起来如下
applicationdbcontext
public class ApplicationDbContext : IdentityDbContext<ApplicationUser, ApplicationRole, int>
启动类
services.AddDbContext<ApplicationDbContext>(options =>
options.UseMySql(Configuration.GetConnectionString("MySQLConnection")));
services.AddIdentity<ApplicationUser, ApplicationRole>()
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();
如果您注意到,在启动类中,我没有在AddEntityFrameworkStores<ApplicationDbContext>().
上添加 int ,因为编译器错误不断出现在说>"不支持...。'。
我做了以下操作以删除旧数据库和迁移
$ drop-database
$ remove-migration
添加新配置
$ add-migration Initial
$ update-database
我发现只有更改用户和角色表,但没有更改其他(Aspuserroles,aspuserclaim等)。
。fyi:
我正在使用Visual Studio2017。我的项目使用单个用户帐户选择的默认Web应用程序 .net Core 2。MySQL为我的数据库提供商。
我的问题是:"我做错了什么?"还是发生了什么变化?
您需要告诉IdentityDbContext
所有自定义类型。为了做到这一点,您需要将经过的仿制药扩展到IdentityDbContext
,例如:
public class ApplicationDbContext : IdentityDbContext<ApplicationUser,
ApplicationRole, int, ApplicationUserClaim, ApplicationUserRole,
ApplicationUserLogin, ApplicationRoleClaim, ApplicationUserToken>
您需要执行以下步骤:
-
根据下面的代码添加所需的表名称:
protected override void OnModelCreating(ModelBuilder builder) { base.OnModelCreating(builder); builder.Entity<ApplicationUser>().ToTable("Users"); builder.Entity<ApplicationRole>().ToTable("Roles"); builder.Entity<ApplicationRoleClaim>().ToTable("RoleClaims"); builder.Entity<ApplicationUserRole>().ToTable("UserRoles"); builder.Entity<ApplicationUserClaim>().ToTable("UserClaims"); builder.Entity<ApplicationUserToken>().ToTable("UserTokens"); builder.Entity<ApplicationUserLogin>().ToTable("UserLogins"); }
-
打开软件包管理器控制台并运行以下命令:
添加移民mytablesrenation
您将看到一个在应用程序中创建的新文件,并带有所有命令,以重命名表和更多命令。
-
运行更新数据库
完成,您的桌子现在应该重命名。