Это стандартное поведение WCF и его нельзя «контролировать» - так оно и работает.
Когда среда выполнения WCF / svcutil выполняет «Добавить ссылку на службу», она считывает документы службы (WSDL, XSD) и из этих описаний создает прокси на стороне клиента - оба прокси службы (с методами, вызывающими сервис) и представления данных на стороне клиента.
Единственное, что клиент WCF и общий ресурс службы - это представление данных в сети - например, прокси-классы на стороне клиента будут сериализованы в тот же формат XML, что и классы на стороне сервера. В конце концов: WCF - это система для передачи сообщений - между клиентом и сервером нет соединения, кроме сериализованных сообщений.
Эти прокси-классы на стороне клиента генерируются в выбранном вами пространстве имен - вы можете управлять этим, но они всегда будут отдельными классами в отдельном пространстве имен.
Есть два основных способа решения этой проблемы:
вы можете использовать что-то вроде AutoMapper для отображения между этими классами, где это необходимо; поскольку формат сериализации в проводнике одинаков, то же самое относится и к именам свойств, и поэтому сопоставление одного типа объекта другому должно быть очень простым и простым
если вы контролируете оба конца провода, например, и сервер, и клиент, и оба они находятся в .NET, вы также можете поместить все свои сервисные контракты, контракты на данные и т. д. в отдельную сборку библиотеки классов, а затем разделить эту сборку между сервером и клиентом. Таким образом, когда вы делаете «Добавить ссылку на службу», среда выполнения WCF будет повторно использовать существующие типы в общей сборке, на которую есть ссылка, и не будет снова создавать прокси-классы на стороне клиента. С этим «трюком» и ваш сервер, и ваш клиент будут использовать идентичные классы из этой общей совместно используемой сборки.