Обновление EntityFramework не внесет изменения - PullRequest
0 голосов
/ 16 февраля 2012

После запуска приведенного ниже кода item.Name по-прежнему говорит: «New Item».

что здесь не так?

item.Name = "Updated Item";

items.Update(item);

public void Update(Item item)
    {
        using (var context = new wirvar_masterEntities())
        {
            var key = new EntityKey("wirvar_masterEntities.Items", "ID", item.ID);

            var itemToUpdate = (Item)context.GetObjectByKey(key);

            if (itemToUpdate == null) return;
            itemToUpdate = item;

            context.SaveChanges();
        }
    }

Ответы [ 3 ]

3 голосов
/ 16 февраля 2012

Неправильно, что нет изменений для сохранения.Вы получили ваш itemToUpdate из базы данных и после того, как данные заменили его ссылкой на элемент - EF никогда не знал ни о каких изменениях, которые вы сделали, потому что присвоение item для itemToUpdate ничего не дает.Вместо присвоения попробуйте использовать:

context.Items.ApplyCurrentValues(item);
2 голосов
/ 16 февраля 2012

Чтобы сделать это, попробуйте метод ApplyCurrentValues в контексте объекта после выполнения GetObjectKey. Тогда все значения должны обновиться.

0 голосов
/ 16 февраля 2012

вы имеете дело со ссылками ... лучше сопоставить свойства, чем думать, что изменение указателя сделает это!

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