我有一个MVC5 EF6.1应用程序,除了编辑记录之外,它在每个方面都按我希望的方式工作。
我正在使用视图模型来处理创建和编辑表单。视图模型与实体模型匹配,但它不包含Id,并且它具有一些用于处理文件上载的额外属性。
创建记录非常有效。编辑表单按照预期的方式填充字段。在更新时,将识别更改。
问题是,不是更新记录,而是将反映更改的新记录添加到数据库中。应该更新的记录仍在那里。
我已经尝试了所有我能找到的东西来尝试解决这个问题。我尝试使用和不使用EntityState进行更新。我尝试过设置OriginalValues和CurrentValues。我甚至尝试过使用原始SQL语句。所有都具有相同的结果:添加了包含新数据的记录,原始文件保持不变。
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit(int id, MyViewModel model)
{
var thisRecord = db.MyEntity.Find(id);
//some stuff to update thisRecord properties
db.SaveChanges();
}
这很好用。我该怎么做才能改变我正在制作的唱片而不是制作一张新唱片呢? 任何帮助将不胜感激。这让我疯了。
答案 0 :(得分:0)
试试这个:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit(int id, MyViewModel model)
{
var thisRecord = db.MyEntity.Find(id);
thisRecord.SomeProperty = newValue;
// UPDATE: Try adding this line:
_db.Entry(thisRecord).State = EntityState.Modified;
db.SaveChanges();
// Whatever other processing you're doing
}