gpt4 book ai didi

c# - 不会保存编辑

转载 作者:太空宇宙 更新时间:2023-11-03 21:23:34 25 4
gpt4 key购买 nike

我在我的数据库中添加了一个 bool 值“ChangedPassword”。我必须强制用户在第一次登录时更改密码。

在他们更改密码后, bool 值必须更改为 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,但不管有没有它都不起作用。任何想法?让我知道。

最佳答案

您需要在新创建的 DbContextAttach 对象,以便 EntityFramework 开始跟踪对象的更改。没有它,您新创建的上下文对 user 对象的更改一无所知

SidewindContext db = new SidewindContext();

db.Attach(user);

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

db.SaveChanges();

关于c# - 不会保存编辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28810675/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com