尝试更新数据库时,此代码给出错误
错误:带有键的对象
匹配提供的对象的键
在中找不到
ObjectStateManager。验证
提供的对象的键值
匹配对象的键值
必须应用哪些更改。
public void UpdateAccuralSettings(SystemTolerance updatedObject)
{
_source.SystemTolerances.ApplyCurrentValues(updatedObject);
_source.SaveChanges();
}
最佳答案
ApplyCurrentValues
仅在首先从数据库中加载实体时才有效(如果您不使用之前用于加载它的上下文,则很可能不会):
public void UpdateAccuralSettings(SystemTolerance updatedObject)
{
_source.SystemTolerances.Single(x => x.Id == updatedObject.Id);
_source.SystemTolerances.ApplyCurrentValues(updatedObject);
_source.SaveChanges();
}
如果您只想保存当前数据而不重载实体,请使用:
public void UpdateAccuralSettings(SystemTolerance updatedObject)
{
_source.SystemTolerances.Attach(updatedObject);
_source.ObjectStateManager.ChangeEntityState(updatedObject, EntityState.Modified);
_source.SaveChanges();
}