EF полагается на внутреннее отслеживание изменений объекта, чтобы определить, какие операции ему нужно выполнить в базе данных.Все, что делает ваш Update
метод - это вызывает SaveChanges
, поэтому просто изменения, вносимые в сущность, по какой-то причине не отслеживаются, а когда вы вызываете SaveChanges
, EF не видит работы, которую нужно выполнить, и просто возвращает.Что касается того, почему изменения вашей сущности не отслеживаются, здесь недостаточно вашего хранилища, чтобы сказать.
Однако я скажу, что это одна из первостепенных причин для , а не использования.шаблон хранилища с EF.Слишком просто делать вещи, которые мешают EF отслеживать изменения, и 99 раз из 100, это именно то, что делают разработчики.Когда вы используете ORM, например EF, означает, что - это ваш уровень данных.Он реализует репозиторий и единицы работы уже.Не каждый «слой» в вашей архитектуре должен принадлежать вам, и это критическая ошибка, которую допускают многие разработчики.Просто используйте ваш контекст напрямую.Вот для чего это.
Теперь пуристы могут утверждать, что у вас будет сильная зависимость от EF.Ну, угадай что?Вы делаете независимо.Вы выбрали его в качестве ORM, и это решение не должно и не должно быть легким.Что делать, если вы хотите выключить это с чем-то еще в будущем?Этот вопрос также всегда поднимается.Просто не будешь.Трения, возникающие при выключении чего-то вроде ORM, таковы, что оно никогда не станет бизнес-приоритетом.
Тем не менее, если вы хотите действительно абстрагировать зависимость, вам следует взглянуть на шаблонынапример, CQRS или микросервисы, которые, в отличие от избыточного и бесполезного уровня репозитория, действительно повышают ценность вашего приложения.Однако эти шаблоны сложны в реализации и излишни для большинства приложений.