我已在本地修改了一个对象,然后将其传递给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();
}
答案 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();
}