Я смотрел на различия между POCO и DTO (кажется, что POCO - это dto's с поведением (методы?)) И наткнулся на эту статью Мартина Фаулера об анемии доменная модель.
Из-за недостатка понимания я думаю, что создал одну из этих моделей анемичных доменов.
В одном из моих приложений у меня есть сущности бизнес-домена, определенные в dll 'dto'. У них много свойств, как у геттера, так и у сеттера, и не намного. Мой код бизнес-логики (заполнить, вычислить) находится в другой dll «bll», а мой код доступа к данным - в dll «dal». «Лучшая практика», - подумал я.
Поэтому обычно я создаю dto примерно так:
dto.BusinessObject bo = new dto.BusinessObject(...)
и передать его слою bll следующим образом:
bll.BusinessObject.Populate(bo);
который, в свою очередь, выполняет некоторую логику и передает ее слою dal следующим образом:
dal.BusinessObject.Populate(bo);
Из моего понимания, чтобы превратить мои dto в POCO, мне нужно сделать бизнес-логику и поведение (методы) частью объекта. Таким образом, вместо приведенного выше кода это больше похоже на:
poco.BusinessObject bo = new poco.BusinessObject(...)
bo.Populate();
т. Я вызываю метод объекта, а не передаю объект методу.
У меня вопрос - как я могу это сделать и при этом сохранить уровень «наилучшей практики» в вопросах (отдельные библиотеки DLL и т. Д.). Разве вызов метода для объекта не означает, что метод должен быть определен в объекте?
Пожалуйста, помогите моему замешательству.