C# 应用当前值时实体框架更新问题

C# 应用当前值时实体框架更新问题,c#,entity-framework-4,C#,Entity Framework 4,此代码在尝试更新数据库时出错 错误:具有以下键的对象: 匹配所提供对象的键 在中找不到 ObjectStateManager。验证 提供的对象的键值 将对象的键值与 必须应用哪些更改 可能是您的型号。edmx不是最新的?//数据库已更改 根据您的设置/环境,我认为只需在正确的实体上下文(从中创建UpdateObject)上的.SaveChanges()即可在db中进行更新 所以ev只是_source.SaveChanges() 问候语可能是您的型号。edmx不是最新的?//数据库已更改 根据您的

此代码在尝试更新数据库时出错

错误:具有以下键的对象: 匹配所提供对象的键 在中找不到 ObjectStateManager。验证 提供的对象的键值 将对象的键值与 必须应用哪些更改


可能是您的型号。edmx不是最新的?//数据库已更改

根据您的设置/环境,我认为只需在正确的实体上下文(从中创建UpdateObject)上的.SaveChanges()即可在db中进行更新

所以ev只是_source.SaveChanges()


问候语可能是您的型号。edmx不是最新的?//数据库已更改

根据您的设置/环境,我认为只需在正确的实体上下文(从中创建UpdateObject)上的.SaveChanges()即可在db中进行更新

所以ev只是_source.SaveChanges()


问候语

ApplyCurrentValues
仅当实体第一次从数据库加载时才起作用(如果您在加载实体之前没有使用相同的上下文,则很可能不会):

如果只想保存当前数据而不重新加载实体,请使用:

public void UpdateAccuralSettings(SystemTolerance updatedObject)
{
    _source.SystemTolerances.Attach(updatedObject);
    _source.ObjectStateManager.ChangeEntityState(updatedObject, EntityState.Modified);
    _source.SaveChanges();
}

ApplyCurrentValues
仅在第一次从数据库加载实体时才起作用(如果在加载实体之前没有使用相同的上下文):

如果只想保存当前数据而不重新加载实体,请使用:

public void UpdateAccuralSettings(SystemTolerance updatedObject)
{
    _source.SystemTolerances.Attach(updatedObject);
    _source.ObjectStateManager.ChangeEntityState(updatedObject, EntityState.Modified);
    _source.SaveChanges();
}
public void UpdateAccuralSettings(SystemTolerance updatedObject)
{
    _source.SystemTolerances.Attach(updatedObject);
    _source.ObjectStateManager.ChangeEntityState(updatedObject, EntityState.Modified);
    _source.SaveChanges();
}