使用通用类型'IdentityUserRole <tkey>'需要1个类型参数

时间:2019-01-21 03:59:55

标签: c# asp.net-core

为什么会出现此错误:尝试重命名使用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上没有收到任何错误,但在其余部分,我得到了错误。请参见下图:

enter image description here

1 个答案:

答案 0 :(得分:4)

问题在于IdentityUserRole,IdentityuserClaim和IdentityuserLogin也是通用类。因为此表的键是由通用类型指定的。

这来自文档

IdentityUserLogin Class

和实施

Github implementation

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

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

希望对您有帮助。