种子用户和用户角色问题

时间:2016-06-03 18:33:07

标签: c# asp.net-mvc seeding

我正在尝试使用初始用户和用户角色为我的数据库设定种子,并且遇到了这样的问题。在审查了SO上的类似帖子后,我最终在我的种子方法中得到了以下内容:

if (!context.Users.Any(u => u.UserName == "founder"))
    {
        var store = new UserStore<ApplicationUser>(context);
        var manager = new UserManager<ApplicationUser>(store);
        var user = new ApplicationUser {UserName = "founder"};

        manager.Create(user, "ChangeItAsap!");
        manager.AddToRole(user.Id, "AppAdmin");
    }

和我的ApplicationUser类:

public class ApplicationUser : IdentityUser<int, CustomUserLogin,CustomUserRole,CustomUserClaim>
  {

    public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser, int> manager)
    {
      // Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType
      var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
      // Add custom user claims here
      return userIdentity;
    }
  }

我的问题是我在ApplicationUser上遇到编译错误

  

RecipeManager.Models.ApplicationUser类型不能用作泛型类型或方法'UserManager<TUser>'中的类型参数“TUser”。没有从RecipeManager.Models.ApplicationUserMicrosoft.AspNet.Identity.IUser<string>

的隐式引用转换

1 个答案:

答案 0 :(得分:1)

ApplicationUser必须实现IUser<string>接口。这是用户管理器中允许的类型。该问题很可能与密钥的string数据类型有关。默认的脚手架过程假定为string,因为它是更通用的数据类型。您需要将ApplicationUser类中的键类型更改为字符串,或继承IUser<int>或您在UserManager中使用的任何类型。