我有一个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上看到了一个帖子,据说这是可以接受的
答案 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();