AutoMapper не подходит для возврата к постоянным или доменным моделям.Автор AutoMapper заявил .
Это также не очень хорошо работает, если EF (Core) отслеживает изменения .
Отслеживает измененияделается на основе сущностей, которые загружаются из базы данных.Когда вы изменяете значение сущности, его состояние изменяется с Unchanged
на Modified
и приводит к методу обновления.
Когда вы загружаете сущность без отношения элементов (используя готовую загрузку), то при добавлении сущности она будет помечена как Added
, что приведет к вставке при сохранении.
У вас также есть возможность Attach
и Detach
сущностей.
Из ссылки в блоге:
Роуэн Миллер суммировала новое поведение вПроблема GitHub (bit.ly/295goxw):
Add: добавляет каждую достижимую сущность, которая еще не отслеживается.
Attach: присоединяет каждую достижимую сущность, кроме случаев, когда у достижимой сущности есть хранилище-генерированный ключ и значение ключа не назначается;они будут помечены как добавленные.
Обновление: то же, что и «Присоединить», но объекты помечены как измененные.
Удалить: То же, что и «Присоединить», а затем пометить корень как удаленный.Поскольку каскадное удаление теперь происходит в SaveChanges, это позволяет каскадным правилам передаваться сущностям позже.
Таким образом, вам придется прикреплять свои элементы (если вы хотите добавлять новые только без первичнойkey) или позвоните Update/UpdateRange
на DbSet
, чтобы обновить те с ключом и добавить те без.
Либо обработайте его самостоятельно, установив / изменив его отслеживаемое состояние, как вы уже сделали.Но имейте в виду, Unchanged
не будет обновлять переданные объекты.