首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法更改Asp标识表名称.Asp .Net核心2?

无法更改Asp标识表名称.Asp .Net核心2?
EN

Stack Overflow用户
提问于 2017-09-08 14:35:50
回答 1查看 809关注 0票数 1

我想更改标识表的名称。我搜索了一下,发现了以下方法:

第一项:

代码语言:javascript
复制
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");
    });
 }

第二项:

代码语言:javascript
复制
    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作为它们的主键。

ApplicationDbContextStartUp如下所示

ApplicationDbContext

代码语言:javascript
复制
public class ApplicationDbContext : IdentityDbContext<ApplicationUser, ApplicationRole, int>

StartUp类

代码语言:javascript
复制
       services.AddDbContext<ApplicationDbContext>(options =>
            options.UseMySql(Configuration.GetConnectionString("MySQLConnection")));

        services.AddIdentity<ApplicationUser, ApplicationRole>()
            .AddEntityFrameworkStores<ApplicationDbContext>()
            .AddDefaultTokenProviders();

如果您注意到,在start up类中,我没有在上添加一个int,因为编译器错误总是显示“不支持.”.

我做了以下操作来删除旧的数据库和迁移

代码语言:javascript
复制
$ drop-database
$ remove-migration

要添加新配置,请执行以下操作

代码语言:javascript
复制
$ add-migration Initial
$ update-database

我发现的结果是,只更改了用户和角色表,而没有更改其他表(AspUserRoles、AspUserClaim.)。

FYI:

我正在使用2017。我的项目使用默认的with和.NET Core2,我还使用了数据库提供程序的.NET。

我的问题是:,我做错了什么?或者是什么改变了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-08 15:29:19

您需要告诉IdentityDbContext您的所有自定义类型。为此,您需要扩展传递给IdentityDbContext的泛型,如下所示:

代码语言:javascript
复制
public class ApplicationDbContext : IdentityDbContext<ApplicationUser,
    ApplicationRole, int, ApplicationUserClaim, ApplicationUserRole,
    ApplicationUserLogin, ApplicationRoleClaim, ApplicationUserToken>
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46118930

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档