asp.net-core – 为什么这违反了类型参数’TUser’的约束?
我正在尝试使用以下方法自定义asp.net标识实体:
public class User : IdentityUser<string,UserClaim,UserRole,UserLogin> public class UserClaim : IdentityUserClaim<string> public class UserLogin : IdentityUserLogin<string> public class UserRole : IdentityUserRole<string> public class UserToken : IdentityUserToken<string> public class Role : IdentityRole<string,RoleClaim> public class RoleClaim : IdentityRoleClaim<string> 然后我创建了一个DbContext类,如下所示 public class AppDbContext : IdentityDbContext<User,Role,string,UserLogin,RoleClaim,UserToken> 然后配置这些 services .AddIdentity<User,Role>() .AddEntityFrameworkStores<AppDbContext>() .AddDefaultTokenProviders(); 但我也尝试过 .AddEntityFrameworkStores<AppDbContext,string>() 我在互联网上阅读了很多博客文章,例如this,但是大多数博客都要针对密钥的数据类型进行更改,比如int或Guid.在我的情况下,我不是从字符串更改默认键数据类型. 我在所有这些情况下编译都没问题,但它在运行时抛出错误
如果我添加一个自定义的UserStore类,如this post中所述 public class UserStore : UserStore<User,AppDbContext,UserToken> 出现编译错误
我做错了什么? 解决方法
>
According to MSDN,UserStore的约束< TUser>是TUser:IdentityUser.
> Also according to MSDN,IdentityUser:IdentityUser< string,IdentityUserLogin,IdentityUserRole,IdentityUserClaim>. >根据您的声明,用户:IdentityUser< string,UserLogin>. 长名称很容易错过,所以让我们将IdentityUser别名为D和IdentityUser< string,IdentityUserClaim>作为B.现在上面的内容可以重申为: > TUser:D(TUser必须是一种D)> D:B(D是一种B)>用户:B(您的用户通常是一种B,但根据需要不是特定的D) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |