获取和更新所有用户Asp.net Core 1.1

时间:2018-01-14 17:07:07

标签: c# asp.net-core asp.net-identity

我有一个Asp.Net Core 1.1 + Identity Web应用程序。我需要一个能够获得所有Identity用户,使用其属性执行某些操作然后使用新数据更新数据库的函数。这是我写的课程:

public class WeightCalc
{
    private UserManager<User> um;
    private readonly ApplicationDbContext _context;
    public WeightCalc(ApplicationDbContext context)
    {
        _context = context;
       um = new UserManager<User>(new UserStore<User>(_context), null, null, null, null, null, null, null, null);
    }

    public async void Calculate()
    {
        var users = um.Users;
        foreach (User user in users)
        {
            var level = _context.Multipliers.SingleOrDefault(p => (p.Lower < user.rating) && (p.Higher > user.rating)); 
            user.Weight = level.Mul; 
           var result = await um.UpdateAsync(user);
        }
    }
}

这就是我为调试目的而调用此函数的方法:

 [HttpPost]
    public async void rateupdate() 
    {            
        WeightCalc test = new WeightCalc(_context);
        test.Calculate();

    }

显然,它对数据库中的数据没有影响。我哪里做错了?我对用户管理器中的所有空值有一些疑问,但我相信我在SO上看到了一个帖子,据说这是可以接受的

2 个答案:

答案 0 :(得分:0)

您是否在_context.saveChanges();之后尝试了var result = await um.UpdateAsync(user);

答案 1 :(得分:0)

这对我有用......

var users = _context.Users.ToList();

foreach (var user in users)
{
    var level = _context.Multipliers.SingleOrDefault(p => (p.Lower < user.rating) && (p.Higher > user.rating)); 
    user.Weight = level.Mul; 
}

_context.Users.UpdateRange(users);
_context.SaveChanges();