Обновление диспетчера пользователей Asp.net MVC

Я попытался обновить данные пользователя в базе данных, я беру значение из представления и назначаю эти данные текущему пользователю. Тем не менее, я получаю ошибку в этой строке, когда обновляю данные пользователя var result = await UserManager.UpdateAsync(userAccount);. Написано Проверка не удалась для одного или нескольких субъектов. Дополнительные сведения см. в описании свойства EntityValidationErrors. .Как это исправить? Спасибо

КОНТРОЛЕР:

public ApplicationUserManager UserManager
    {
        get
        {
            return _userManager ?? HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>();
        }
        private set
        {
            _userManager = value;
        }
    }

    [HttpPost]
    [ValidateAntiForgeryToken]
    public async Task<ActionResult> ModifyAccount(ModifyUserAccountViewModel model)
    {
        var user = await UserManager.FindByIdAsync(int.Parse(User.Identity.GetUserId()));
        UserAccount userAccount = (UserAccount)user;
        userAccount.surname = model.surname;
        userAccount.name = model.name;
        userAccount.Email = model.email;
        var result = await UserManager.UpdateAsync(userAccount);
        if (result.Succeeded)
        {
            return RedirectToAction("Index", new { Message = "Account modyfyied successfully!" });
        }
        AddErrors(result);
        return View("Error");
     }

Startup.cs:

public void Configuration(IAppBuilder app)
    {
        ConfigureAuth(app);
        app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create);          
    }

person Ünal Öztürk    schedule 02.09.2015    source источник
comment
Вы: См. свойство EntityValidationErrors для более подробной информации? Можете ли вы определить, какие ошибки проверки вы получаете?   -  person freshbm    schedule 02.09.2015
comment
System.Data.Entity.Validation.DbEntityValidationException, написано   -  person Ünal Öztürk    schedule 02.09.2015
comment
Вы можете попробовать использовать этот код, чтобы определить, какое свойство вызывает вашу ошибку: stackoverflow.com/a/6258174/1081079   -  person freshbm    schedule 02.09.2015
comment
** Исключение типа «System.NullReferenceException» произошло в App_Web_2cj5f1rz.dll, но не было обработано в пользовательском коде ** Я принимаю эту ошибку сейчас   -  person Ünal Öztürk    schedule 02.09.2015
comment
Можете ли вы опубликовать свой измененный код?   -  person freshbm    schedule 02.09.2015


Ответы (1)


Вы можете попробовать, как предложил @Praveen Prasad в этом сообщении, поймать исключение, чтобы увидеть, какие ошибки проверки у вас есть:

 [HttpPost]
 [ValidateAntiForgeryToken]
 public async Task<ActionResult> ModifyAccount(ModifyUserAccountViewModel model)
 {
    var user = await UserManager.FindByIdAsync(int.Parse(User.Identity.GetUserId()));
    UserAccount userAccount = (UserAccount)user;
    userAccount.surname = model.surname;
    userAccount.name = model.name;
    userAccount.Email = model.email;

    try { 
      var result = await UserManager.UpdateAsync(userAccount);
    }
    catch (DbEntityValidationException dbEx)
    {
        foreach (var validationErrors in dbEx.EntityValidationErrors)
        {
            foreach (var validationError in validationErrors.ValidationErrors)
            {
               Trace.TraceInformation("Property: {0} Error: {1}", 
                                validationError.PropertyName, 
                                validationError.ErrorMessage);
            }
        }
    }

    if (result.Succeeded)
    {
       return RedirectToAction("Index", new { Message = "Account modyfyied successfully!" });
    }
    AddErrors(result);
    return View("Error");
}
person freshbm    schedule 02.09.2015