Проблема обновления Entity Framework при применении текущих значений - PullRequest
1 голос
/ 08 июля 2011

Этот код выдает ошибку при попытке обновить базу данных

Ошибка: объект с ключом, который соответствует ключу предоставленного объекта, не найден в ObjectStateManager.Убедитесь, что значения ключа предоставленного объекта соответствуют значениям ключа объекта, к которому должны применяться изменения.

 public void UpdateAccuralSettings(SystemTolerance updatedObject)

    {
        _source.SystemTolerances.ApplyCurrentValues(updatedObject);
        _source.SaveChanges();

    }

Ответы [ 2 ]

7 голосов
/ 08 июля 2011

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();
}
1 голос
/ 08 июля 2011

может быть, что ваш model.edmx не актуален?// база данных изменилась?

в зависимости от вашей настройки / среды, я думаю, что просто .SaveChanges () справа Entitie-Context (из которого был создан updatedObject) будет выполнять обновление в БД.

так что просто _source.SaveChanges ();

привет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...