SQL在更新时添加新记录

时间:2015-01-09 02:15:09

标签: sql sql-server entity-framework model-view-controller sql-update

我有一个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();
    }

这很好用。我该怎么做才能改变我正在制作的唱片而不是制作一张新唱片呢? 任何帮助将不胜感激。这让我疯了。

1 个答案:

答案 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
}