首页 > 解决方案 > 使用泛型类型 'IdentityUserRole' 需要 1 个类型参数

问题描述

为什么我在尝试重命名使用 Identity 创建的表时收到此错误:“使用泛型类型 'IdentityUserRole' 需要 1 个类型参数”。请在下面查看我的代码:

 protected override void OnModelCreating(ModelBuilder modelBuilder){
            base.OnModelCreating(modelBuilder);
            //AspNetUsers -> User
            modelBuilder.Entity<AppUser>()
                .ToTable("User");
            //AspNetRoles -> Role
            modelBuilder.Entity<IdentityRole>()
                .ToTable("Role");
            //AspNetUserRoles -> UserRole
            modelBuilder.Entity<IdentityUserRole>().ToTable("UserRole");
            //AspNetUserClaims -> UserClaim
            modelBuilder.Entity<IdentityUserClaim>()
                .ToTable("UserClaim");
            //AspNetUserLogins -> UserLogin
            modelBuilder.Entity<IdentityUserLogin>()
                .ToTable("UserLogin");
        }

我在 Entity AppUser 和 Entity IdentityRole 上没有收到任何错误,但在其余部分,我收到了错误。请看下图:

在此处输入图像描述

标签: c#asp.net-core

解决方案


问题是 IdentityUserRole、IdentityuserClaim 和 IdentityuserLogin 也是通用类。因为这个表的键是由泛型指定的。

这是来自文档

IdentityUserLogin 类

以及实施

Github 实现

因此,您必须执行以下操作:

modelBuilder.Entity<IdentityUserLogin<string>>().ToTable("UserLogin");

我希望这对你有帮助。


推荐阅读