无法更改密码

时间:2016-08-23 08:43:08

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

我使用ASP.NET MVC5并且我想更改帐户的密码,但我不断收到错误说“#34;一个或多个实体的验证失败”。查看验证错误"并且源代码错误是

var result = await UserManager.ChangePasswordAsync(User.Identity.GetUserId(), model.oldPassword, model.NewPassword);

1 个答案:

答案 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);
        }
    }
}