我想自定义Asp.Net Identity 3类。
这是我所做的:
public class MyDbContext : IdentityDbContext<User>
和
public class User : IdentityUser<int>
我也进行了扩展,IdentityUserClaim<int>, IdentityRole<int>, IdentityUserLogin<int> and IdentityUserRole<int>
但是出现以下错误:
The type 'User' cannot be used as type parameter 'TUser' in the generic type or method' IdentityDbContext<TUser>'.There is no implicit reference conversion from 'User' to 'Microsoft.AspNet.Identity.EntityFramework.IdentityUser'.
我不知道您是如何使您的类继承的,IdentityUser<int>
因为“ IdentityUser”的通用版本具有更多类型参数。在这里检查:https : //msdn.microsoft.com/en-us/library/dn613256%28v=vs.108%29.aspx
因此,您将需要:
public class User : IdentityUser<int, UserLogin, UserRole, UserClaim>
和:
public class UserRole : IdentityUserRole<int> { }
public class UserClaim : IdentityUserClaim<int> { }
public class UserLogin : IdentityUserLogin<int> { }
编辑:对于身份3.0,事情有些不同,但是问题是相似的。根据:https : //github.com/aspnet/Identity/blob/dev/src/Microsoft.AspNet.Identity.EntityFramework/IdentityDbContext.cs
IdentityDbContext<TUser>
就像这样:
public class IdentityDbContext<TUser> : IdentityDbContext<TUser, IdentityRole, string> where TUser : IdentityUser
{ }
重要部分是where TUser : IdentityUser
IdenityUser的定义是:
public class IdentityUser : IdentityUser<string>
{ ... }
而且您的User
类是继承的,IdentityUser<int>
因此没有int
/ IdentityUser的隐式转换string
。
解决办法是继承IdentityDbContext<TUser, TRole, TKey>
哪里TUSER将是你的User
班,TRole
将是新的角色类iheritsIdentityRole<int>
和TKey
是int
:
public class MyDbContext : IdentityDbContext<User, Role, int> {...}
public class User : IdentityUser<int> {...}
public class Role : IdentityRole<int> {...}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句