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

本文关键字:记录 DB dbcontext 何使用 SaveChanges 修改 | 更新日期: 2023-09-27 18:08:26

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

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

但是当我运行方法来保存更改时,它返回没有错误,记录没有在数据库上更新。

在这里做一个搜索,我遇到了这个问题,建议在调用保存之前将db记录标记为修改状态。这并没有纠正这个问题。

问题:

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

这是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();

}

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

您的实体是connected(或tracked)实体。所以你不需要像这样写 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();
}