MVC 5种子用户到aspNetUserRole

时间:2015-09-15 17:28:00

标签: asp.net-mvc entity-framework asp.net-mvc-5

我尝试使用用户,某些角色初始化我的数据库,然后想要尝试将用户分配给该角色。我现在可以毫无问题地为用户和角色播种,但在尝试将用户添加到角色时,我会成为一个裁剪器。

这是我的

class ViewController {
     var cvDataArray = cells = NSMutableArray.new()
    func viewDidLoad() {
        super.viewDidLoad()

        cvDataArray.enumerateObjectsUsingBlock({(obj: AnyObject, idx: Int, stop: Bool) in            var cell: UITableViewCell = tableView.dequeueReusableCellWithIdentifier("")
            cell.textLabel.text = obj["title"]
            cells.addObject(cell)

        })
        tableView.reloadData()
    }

    func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }

    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return cells.count
    }

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        return cells.objectAtIndex(indexPath.row)
    }

    func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
        var cell: UITableViewCell = cells.objectAtIndex(indexPath.row)
    }
}

4 个答案:

答案 0 :(得分:0)

不要使用魔法字符串。将角色移到If范围之外,将角色添加到角色时,请使用role.Name。这样,你就不会遇到你现在遇到的问题,你的角色是"管理员"但是你要添加到" admin"。

答案 1 :(得分:0)

您正在调用需要数组的方法。我想你可能想要:

userManager.AddToRoleAsync(userToInsert.Id, "Admin");

userManager.AddToRolesAsync(userToInsert.Id, "Admin".ToArray());

答案 2 :(得分:0)

我认为您使用async方法时遇到问题。要解决此问题,您可以编写以下代码之一:

  1. 改为使用AddToRole扩展方法:

    userManager.AddToRole(userToInsert.Id, "Admin");
    
  2. 致电Wait()后致电AddToRoleAsync

    userManager.AddToRoleAsync(userToInsert.Id, "Admin").Wait();
    
  3. 或使用async / await模式:

    public async Task Foo()
    {
        // other codes
    
        await userManager.AddToRoleAsync(userToInsert.Id, "Admin");
    }
    

答案 3 :(得分:0)

我发现我可以这样做

 var userStore = new UserStore<ApplicationUser>(context);
        var userManager = new UserManager<ApplicationUser>(userStore);

        if(!context.Users.Any(t => t.UserName == "markabarmi@hotmail.com"))
        {
            var user = new ApplicationUser { UserName = "markabarmi@hotmail.com", Email = "markabarmi@hotmail.com" };
            userManager.Create(user, "passw0d!");

            context.Roles.AddOrUpdate(r => r.Name, new IdentityRole { Name = "Admin" });
            context.SaveChanges();
            userManager.AddToRole(user.Id, "Admin");
        }

这对我很有用 感谢您的评论