【发布时间】:2021-07-26 15:24:32
【问题描述】:
在我的项目中,我使用的是 ASP.Net Core 身份。我有一个ApplicationUser 类,其中包含Education 列表。
public class ApplicationUser: IdentityUser, IEntity
{
public ApplicationUser()
{
Educations = new List<Education>();
}
public string Name { get; set; }
public DateTime DateofBirth { get; set; }
public virtual List<Education> Educations { get; set; }
}
教育
public class Education:IEntity
{
[Key]
public Guid GUID { get; set; }
public string Institution { get; set; }
public string Degree { get; set; }
}
我想通过 UserManager 更新用户教育列表。
public async Task<IActionResult> UpdateProfile(UpdateModel model)
{
ApplicationUser user = await _userManager.GetUserAsync(User);
if (ModelState.IsValid)
{
user.Name = model.UserDetails.Name;
user.DateofBirth = model.UserDetails.DateofBirth;
user.Educations = model.UserDetails.Educations;
var userPassword = _userManager.PasswordHasher.VerifyHashedPassword(user,
user.PasswordHash, model.Password);
if (userPassword != PasswordVerificationResult.Success)
{
ModelState.AddModelError(string.Empty, "Invalid Password.");
return Json("/Profile/Update");
}
else
{
IdentityResult result = await _userManager.UpdateAsync(user);
}
}
return Json("/Profile/Index");
}
更新模型
public class UpdateModel
{
public ApplicationUser UserDetails { get; set; }
[Required]
[DataType(DataType.Password)]
public string Password { get; set; }
}
更新时,如果我尝试添加新的 Education 对象,则会出现并发失败。但是已经存在的教育对象会正确更新。
【问题讨论】:
标签: c# entity-framework-core asp.net-core-mvc asp.net-identity asp.net-core-3.1