无法使用UserStore

时间:2016-03-08 04:11:20

标签: c# asp.net-mvc entity-framework asp.net-mvc-3 asp.net-identity

我刚刚使用UserStore定义了一个实例,如下所示。

var store = new UserStore<ApplicationUser>(new ProjectEntities());

但得到以下错误

  

“project_name.Models.ApplicationUser”类型不能用作类型   泛型类型或方法'UserStore'中的参数'TUser'。   没有隐式引用转换   'project_name.Models.ApplicationUser'到   'Microsoft.AspNet.Identity.EntityFramework.IdentityUser'。

这是我在ApplicationUser

中定义IdentityModel.cs的方式
public class ApplicationUser : IdentityUser<string, ApplicationUserLogin, ApplicationUserRole, ApplicationUserClaim>
{
    public ApplicationUser()
    {
    this.Id = Guid.NewGuid().ToString();
    }

    // custom User properties/code here
    public string Full_Name { get; set; }
    public string Gender { get; set; }

    public async Task<ClaimsIdentity>GenerateUserIdentityAsync(ApplicationUserManager manager)
    {
        var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
        return userIdentity;
    }
}

2 个答案:

答案 0 :(得分:1)

我认为错误是你做错了什么

您尝试传递ApplicationUser,但UserStore要求您使用Microsoft.AspNet.Identity.EntityFramework.IdentityUse的类型,您可能应该从Microsoft.AspNet.Identity.EntityFramework.IdentityUse扩展/继承ApplicationUser

类似

public class ApplicationUser : IdentityUser

答案 1 :(得分:0)

我不确定您为什么使用IdentityUser<string, ApplicationUserLogin, ApplicationUserRole, ApplicationUserClaim>代替IdentityUser作为COLD TOLD指出,因为该签名的最常见用途是使用INT键而不是字符串。使用IdentityUser,默认情况下您将获得字符串键。

因此,假设您有其他理由使用该签名,则需要覆盖整个标识堆栈:IdentityUser,IdentityUserRole,IdentityRole,IdentityUserClaim,IdentityUserLogin,IdentityDbContext,UserStore和RoleStore。

所以UserStore会是:

public class ApplicationUserStore : 
    UserStore<ApplicationUser, ApplicationRole, int,
    ApplicationUserLogin, ApplicationUserRole, 
    ApplicationUserClaim>, IUserStore<ApplicationUser, int>, 
    IDisposable
{
    public ApplicationUserStore() : this(new IdentityDbContext())
    {
        base.DisposeContext = true;
    }

    public ApplicationUserStore(DbContext context)
        : base(context)
    {
    }
}

请参阅http://johnatten.com/2014/07/13/asp-net-identity-2-0-extending-identity-models-and-using-integer-keys-instead-of-strings/