Я согласен с @AbdouMoumen, что гораздо проще использовать модельные объекты на уровне представления. Уровень обслуживания должен предоставлять API для сохранения этих объектов в хранилище данных (дБ). Уровень обслуживания не должен тупо дублировать юриста хранилища (т. Е. Сохранить (сущность) для каждой сущности), а должен обеспечивать сохранение высокого уровня для совокупности сущностей. Например, у вас может быть Save (заказ) в слое сервиса, который приводит к обновлению более базовых объектов, таких как инвентарь, клиент, учетная запись.
ользую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
объект? И нужно ли создавать скрытые поля для каждого элемента, который вы не хотите показывать, чтобы они могли сохраниться обратно?
Как вы справляетесь с сохранением объекта обратно в базу данных? Что произойдет, если ваш вид / модель имеет дело только с парой полей объекта?