如何使用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();
}
您的实体是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();
}