До сих пор я использовал активные записи во всех моих приложениях, управляемых базой данных c #. Но теперь мое приложение требует, чтобы мой постоянный код был отделен от моих бизнес-объектов. Я прочитал много постов о шаблоне отображения данных Мартина Фаулера, но мои знания об этом шаблоне все еще очень ограничены.
Давайте использовать следующий пример:
Если у меня есть 2 таблицы - Customer и CustomerParameters. Таблица CustomerParameters содержит значения клиента по умолчанию для создания нового клиента.
Затем мне нужно будет создать класс CustomersMapper для обработки всей персистентности Customer. Мои классы Customer и CustomersList будут сотрудничать с этим классом сопоставления для сохранения данных о клиентах.
У меня есть следующие вопросы:
Как бы я перенес необработанные данные в мой класс Customer и из класса Customer в маппер без нарушения определенных бизнес-правил? DTO-х?
Допустимо ли иметь метод SaveAll и LoadAll в моем классе Mapper для обновления и загрузки данных нескольких клиентов? Если да, то в случае SaveAll, как маппер узнает, когда обновлять или вставлять данные?
Будет ли класс сопоставления Customer отвечать за извлечение значений по умолчанию из таблицы CustomerParameters или будет лучше создать сопоставитель CustomerParameters?
Инструмент O / R mapper здесь не совсем. База данных, которую я использую, является транзакционной и требует, чтобы я написал свой собственный шаблон Mapper.
Любые идеи и комментарии будут с благодарностью.