Sql 实体框架无法更新记录
我正在使用MVC和实体框架开发一个Webapp,我遇到了一个问题,现在开始变得非常恼人Sql 实体框架无法更新记录,sql,asp.net-mvc,entity-framework,model-view-controller,entity,Sql,Asp.net Mvc,Entity Framework,Model View Controller,Entity,我正在使用MVC和实体框架开发一个Webapp,我遇到了一个问题,现在开始变得非常恼人 [HttpPost] [ValidateAntiForgeryToken] [ValidateInput(true)] public ActionResult ChangeUser(HttpPostedFileBase avatar, int? id) { try { if (id == null) ret
[HttpPost]
[ValidateAntiForgeryToken]
[ValidateInput(true)]
public ActionResult ChangeUser(HttpPostedFileBase avatar, int? id)
{
try
{
if (id == null) return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
if (ModelState.IsValid)
{
Models.Users usr = db.Users.Find(id);
var at = db.Users.Attach(usr);
if (usr == null) return HttpNotFound();
at.Password = Encryption.Encode(usr.Password);
at.Email = usr.Email;
at.NickName = usr.NickName;
if (avatar != null && avatar.ContentLength > 0)
{
var _fileName = Path.GetFileName(avatar.FileName);
var ext = Path.GetExtension(_fileName);
var fileName = Encryption.EncodeFileName(_fileName);
//End of file properties
var path = Path.Combine(Server.MapPath("~/CMS-Content/User/Files/Avatars/"), fileName + ext);
avatar.SaveAs(Server.MapPath(path));
at.ThumbnailPath = path;
}
db.Entry(usr).State = EntityState.Modified;
// other changed properties
db.SaveChanges();
TempData["result"] = "User settings changed successfully.";
}
}
catch
{
TempData["result"] = "An error occured to change the user information!";
}
return RedirectToAction("Users");
}
问题是数据库中的记录没有更新。我得到的输出是,它们已成功更新,但数据库中的记录没有更改。尝试使用附加的模型上下文修改状态:
db.Entry(at).state=EntityState.modified代码>。您的代码使用var at=db.Users.Attach(usr)
更新了Models.Users
的新实例,但在保存未修改的usr
传递的更改并尝试将其设置为修改后的数据时,EF认为更新后的数据在跟踪后仍然保持不变。它不起作用。仍然是相同的结果。尝试使用附加的模型上下文修改状态:db.Entry(at).state=EntityState.modified代码>。您的代码使用var at=db.Users.Attach(usr)
更新了Models.Users
的新实例,但在保存未修改的usr
传递的更改并尝试将其设置为修改后的数据时,EF认为更新后的数据在跟踪后仍然保持不变。它不起作用。还是一样的结果。