Я использую подход Service Layer --> Repository --> Entity Framework (Code-First) w/POCO objects
, и мне сложно обновлять сущности.
Я использую AutoMapper для сопоставления моих доменных объектов с моими моделями представления, и это хорошо работает для получения данных, нет, как мне получить эти изменения обратно в базу данных?
Используя чистые объекты POCO, я бы предположил, что отслеживания изменений не существует, поэтому я вижу, что мой единственный вариант - это обрабатывать его самостоятельно. Вы просто убедитесь, что ваши View модели имеют ТОЧНО те же свойства, что и ваши доменные объекты? Что если я просто поменяю поле или два в модели просмотра? Не будут ли остальные поля в доменном объекте перезаписаны в базе данных значениями по умолчанию?
С учетом сказанного, что является лучшим подходом?
Спасибо!
Редактировать
Итак, на чем я спотыкаюсь, давайте возьмем, к примеру, простой Customer
:
1) У Controller
есть служба CustomerService
, которая вызывает метод GetCustmoerByID
служб.
2) Service
вызывает CustomerRepository
и получает объект Customer
.
3) Controller
использует AutoMapper для сопоставления Customer
с ViewModel
.
4) Controller
передает модель View
. Все отлично!
Теперь в представлении вы делаете некоторые модификации клиента и отправляете его обратно на контроллер, чтобы сохранить изменения в базе данных.
Я бы предположил, что в этот момент объект отделен. Так должна ли модель иметь ТОЧНЫЕ свойства, аналогичные объекту Customer
? И нужно ли вам создавать скрытые поля для каждого элемента, который вы не хотите показывать, чтобы они могли сохраняться обратно?
Как вы справляетесь с сохранением объекта обратно в базу данных? Что произойдет, если ваш вид / модель имеет дело только с парой полей объекта?