我使用ASP.NET MVC5并且我想更改帐户的密码,但我不断收到错误说“#34;一个或多个实体的验证失败”。查看验证错误"并且源代码错误是
var result = await UserManager.ChangePasswordAsync(User.Identity.GetUserId(), model.oldPassword, model.NewPassword);
答案 0 :(得分:0)
我检查您的ChangePasswordAsync
我认为您保存对密码的更改,即保存包含密码的实体。为了给你更准确的答案,我需要你的逻辑来实现这个方法。
我的猜测是要么找不到您的实体,而EF会尝试将更改保存到新实体中,因为新实体没有该属性的值,这是获取该实体的原因所在。错误或找到的实体缺少某些值。
检查这个漂亮的小片段,它可以帮助您调试并找出错误发生在哪个属性上。注意:实体是您的实体类的部分类,因此请相应更改名称。
public partial class Entities
{
public override int SaveChanges()
{
try
{
return base.SaveChanges();
}
catch (DbEntityValidationException ex)
{
var errorMessages = ex.EntityValidationErrors
.SelectMany(x => x.ValidationErrors)
.Select(x => x.ErrorMessage);
var fullErrorMessage = string.Join("; ", errorMessages);
var exceptionMessage = string.Concat(ex.Message, " The validation errors are: ", fullErrorMessage);
throw new DbEntityValidationException(exceptionMessage, ex.EntityValidationErrors);
}
}
}