Я не собираюсь отвечать на вопрос с точки зрения конкретной технологии, но я надеюсь, что вы найдете эту точку зрения полезной при принятии некоторых решений.
ИМХО (и тем из людей, которые следуют Домен-управляемый дизайн ), вы должны держать свои типы сущностей внутренними и, таким образом, отделенными от типов ваших услуг (или типов значений). Очень часто сущности слишком гранулированы для интерфейса службы в любом случае. Например, вы можете захотеть вернуть результат операции на уровне сервиса, который на самом деле является комбинацией разрозненных фрагментов данных в вашей модели сущности. Мало того, но не все поля сущности обязательно предназначены для непосредственного изменения клиентом. Кроме того, если вы начнете выставлять свои типы полномочий напрямую, вы рискуете вступить в брак с базовыми структурами базы данных, которые со временем могут потребовать рефакторинга из соображений масштабируемости. Отделяя типы значений вашего сервиса от базовых сущностей, которые их заполняют, вы даете себе важный уровень гибкости.
Недостатком является то, что вы пишете много типов значений, которые по сути являются "пустыми оболочками" внутри домена службы, которые обычно очень похожи на типы сущностей в вашем слое доступа к данным. Кроме того, вам нужны функции отображения для перевода значений назад и вперед между двумя типами. Для меня это небольшая цена за гибкость, которая предоставляется в будущем.