5

在 asp.net identity 2 中用于更改身份表名称的方法在 asp.net identity 3 中不起作用。

4

2 回答 2

4

您可以通过使用以下扩展方法更改实体映射来轻松完成此ToTable("TableName")操作:OnModelCreatingDbContext

而且您不需要使用.ForSqlServerToTable(),只需.ToTable()在任何数据库中工作即可。

protected override void OnModelCreating(ModelBuilder builder)
{
    base.OnModelCreating(builder);

    builder.Entity<User>().ToTable("Users"); // Your custom IdentityUser class
    builder.Entity<IdentityUserLogin<string>>().ToTable("UserLogins");
    builder.Entity<IdentityUserToken<string>>().ToTable("UserTokens");
    builder.Entity<IdentityUserClaim<string>>().ToTable("UserClaims");
    builder.Entity<IdentityUserRole<string>>().ToTable("UserRoles");
    builder.Entity<IdentityRoleClaim<string>>().ToTable("RoleClaims");
    builder.Entity<IdentityRole>().ToTable("Roles");            
}

这里唯一的问题是记住使用带有标识符类型的泛型(字符串是 AspNetCore 上的默认值)。

于 2016-09-27T02:35:21.423 回答
3

修改 ApplicationDbContext 的 OnModelCreating 中的构建器实体,使用 ForSqlServerToTable 扩展方法更改所需的表名称。

    public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
    {
        protected override void OnModelCreating(ModelBuilder builder)
        {
            base.OnModelCreating(builder);
            // Customize the ASP.NET Identity model and override the defaults if needed.
            // For example, you can rename the ASP.NET Identity table names and more.
            // Add your customizations after calling base.OnModelCreating(builder);

            builder.Entity<ApplicationUser>().ForSqlServerToTable("Users");
            builder.Entity<IdentityUserRole<string>>().ForSqlServerToTable("UserRoles");
            builder.Entity<IdentityUserLogin<string>>().ForSqlServerToTable("UserLogins");
            builder.Entity<IdentityUserClaim<string>>().ForSqlServerToTable("UserClaims");
            builder.Entity<IdentityRole>().ForSqlServerToTable("Roles");                        
        }
    }
于 2015-12-30T04:59:58.597 回答