Добро пожаловать в n-уровневую разработку.
Именно в такой ситуации многие архитектурные решения корпоративного масштаба используют объекты передачи данных между уровнями.
Я бы рекомендовал избегать распространения сущностей домена от уровня обслуживания (бизнеса) к клиенту.Если вы поймете, что сущности узнают о том, полностью ли они загружены, или на каком уровне они находятся в данный момент, они вряд ли являются "POCO", не так ли?
Итак, вы пишете метод службы "GetEntityWithAllDetails",Он должен взять объект GetEntityWithAllDetailsRequest и вернуть объект GetEntityWithAllDetailsResponse, содержащий все, что ожидает вызывающий сервис, и не более.
Очевидно, что между объектами DTO и объектами доменов необходимо выполнить значительную часть сопоставления - такие библиотекиAutomapper (и другие) может помочь с этим.
Распространение доменных сущностей на клиента также ограничивает вашу гибкость в отношении отложенной или активной загрузки сущностей и оставляет вам необходимость иметь дело с повторным присоединением / объединением сущностей,что является проблемой для EF, потому что он не будет повторно присоединять графы сущностей - вы должны пройти по графу вручную.
Я постараюсь сказать это действительно ясно.Распространение сущностей домена от службы к клиенту - это путь к программированию ада, и очень быстро приводит к объектам, имеющим всевозможные обязанности, которые ортоганол для их цели.