无法保存编辑

时间:2015-03-02 13:13:43

标签: c# asp.net-mvc entity-framework

我添加了一个布尔值" ChangedPassword"到我的数据库。我必须强制用户在首次登录时更改密码。

更改密码后,布尔值必须更改为true。它正在工作,但它不会保存它。

我的代码:

        // POST: /Manage/ChangePassword
    [HttpPost]
    [ValidateAntiForgeryToken]
    public async Task<ActionResult> ChangePassword(ChangePasswordViewModel model)
    {
        if (!ModelState.IsValid)
        {
            return View(model);
        }
        var result = await UserManager.ChangePasswordAsync(User.Identity.GetUserId(), model.OldPassword, model.NewPassword);
        if (result.Succeeded)
        {
            var user = await UserManager.FindByIdAsync(User.Identity.GetUserId());
            if (user != null)
            {
                await SignInAsync(user, isPersistent: false);
            }
            SidewindContext db = new SidewindContext();

            if (user.ChangedPassword == false)
            {
                user.ChangedPassword = true;
            }
            db.SaveChanges();

            return RedirectToAction("Index", new { Message = ManageMessageId.ChangePasswordSuccess });
        }
        AddErrors(result);
        return View(model);
    }

我不确定我是否需要db.SaveChanges,但它不能使用或不使用。 任何的想法?让我知道。

2 个答案:

答案 0 :(得分:3)

您需要Attach新创建的DbContext中的对象,以便EntityFramework开始跟踪对象的更改。没有它,您新创建的上下文就<{1}}对象的更改知道 nothing

user

答案 1 :(得分:1)

我认为你应该试试这个

db.Entry(user).State = System.Data.EntityState.Modified;
db.SaveChanges();