Entity Framework: обновить поле до нулевого значения? - PullRequest
5 голосов
/ 31 января 2011

Я использую заглушки для обновления своих сущностей, и когда обновленная сущность состоит из столбцов, значения которых изменены с ненулевых на нулевые, нулевые значения не сохраняются в базе данных, т.е. запись продолжает содержать предыдущий ненулевой ценности.

Что я делаю не так?

public void UpdateEntity(Entity e)
        {
            _context.Works.Attach(new Entity{ Id = e.Id });
            _context.ApplyCurrentValues("Entities", e);
            _context.SaveChanges();
        }

Ответы [ 2 ]

2 голосов
/ 31 января 2011

Проблема в том, что вам нужно присвоить null этим свойствам после вас Attach(), а не до.Возможно ApplyCurrentValues() копирует только не идентичные свойства?(Я никогда не проверял, но было бы разумно, если бы это сделал.)

0 голосов
/ 10 марта 2017

Старайтесь избегать загрузки сущностей с помощью Attach.Если вы просто получаете сущность из БД, вам не нужно беспокоиться о флагах настроек для элементов nulled:

var stage = Db.Stages.First(s => s.ID == someId);
stage.Notation = vm.Notation; // can be also null
Db.SaveChanges();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...