你好我有这样的事情:
public ActionResult Edit(int id)
{
var movie = (from m in _db.Movies where m.Id == id select m).First();
return View(movie);
}
[HttpPost]
public ActionResult Edit(Movie movie)
{
try
{
var originalMovie = (from m in _db.Movies where m.Id == movie.Id select m).First();
_db.Movies.ApplyCurrentValues(movie);
_db.SaveChanges();
return RedirectToAction("Index");
}
catch
{
return View();
}
}
此示例取自Proper way to Edit an entity in MVC 3 with the Entity Framework using Data Model First approach?
我想将仅修改的列传递给 DB SQL 查询(UPDATE Movie ....),因为我正在进行列审计。
代码工作正常,但问题是在我的“电影”实体中,我有一个“FlagOldMovie”属性和其他 10 个属性,我没有在这个视图中使用它,因为它们会保持不变,但是实体框架放在那个属性默认值,因此“ApplyCurrentValues”会发现更改并且属性也会更新。
一种解决方法是将我未更改的属性传递给 html 隐藏输入,而是传递其私有数据。
任何想法?