如何使用dbcontext SaveChanges将修改后的记录推送到DB?

时间:2016-09-23 14:25:56

标签: c# asp.net-mvc entity-framework dbcontext

我已在本地修改了一个对象,然后将其传递给DAL,以便在连接的数据库上进行更新。

通常我会使用存储过程并执行reader来更新数据库,但是这个项目实现了db上下文。

但是当我运行保存更改的方法时,它会返回而不会出现错误,并且数据库上的记录没有更新。

在这里进行搜索我遇到this question建议在调用save之前将db记录标记为已修改状态。哪个没有纠正这个问题。

问题:

如何使用dbcontext SaveChanges将修改后的记录推送到数据库?

这是DAL方法的要点:

public void update_Release_Status(Status recordModified)
{

          //Get the original record and update with the modified values.

        Status recordOriginal = db3.Status .First(i => i.ID == recordModified.ID);
        db3.Entry(recordOriginal).State = System.Data.Entity.EntityState.Modified; //marked as modified here before saving
        recordOriginal = recordModified;
        db3.SaveChanges();


}

1 个答案:

答案 0 :(得分:4)

您的实体是connected(或tracked)one。所以不需要这样做db3.Entry(recordOriginal).State = System.Data.Entity.EntityState.Modified;

注意:您必须将传入对象的属性映射到提取的对象。您可以使用Mapper API或手动执行此操作,如下所示。

public void update_Release_Status(Status recordModified)
{

    Status recordOriginal = db3.Status.First(i => i.ID == recordModified.ID);

    recordOriginal.Name = recordModified.Name;//here you have to do the mapping
    recordOriginal.Age=recordModified.Age; //just used fake property names :)

    db3.SaveChanges();

}