Я создал схему в качестве согласованного интерфейса между нашей компанией и внешней компанией. Сейчас я создаю веб-сервис WCF C # для обработки интерфейса.
Я запустил утилиту XSD, и она создала класс C #. Схема была построена в BizTalk и ссылается на другие схемы, так что в целом генерируется более 15 классов.
Я помещаю атрибут [DataContract} перед каждым из классов.
Нужно ли указывать атрибут [DataMember] для каждого свойства?
Когда я генерирую тестовую клиентскую программу, прокси не имеет никакого кода ни для одного из этих 15 классов.
Мы использовали эту технику при использовании сервисов .asmx, но не уверены, будет ли она работать так же с WCF. Если мы изменим схему, мы захотим восстановить класс WCF, и тогда мы будем каждый раз обновлять его со всеми атрибутами [DataMember]? Есть ли более новый инструмент, похожий на XSD.exe, который будет лучше работать с WCF?
Спасибо
Нил Уолтерс
РЕШЕНИЕ (похоронен в одном из ответов / комментариев Сондерса):
Добавьте XmlSerializerFormat к определению интерфейса:
[OperationContract]
[XmlSerializerFormat] // ADD THIS LINE
Transaction SubmitTransaction(Transaction transactionIn);
Две ноты:
1) После этого я увидел намного больше .xsds в моей тестовой клиентской программе proxy (Service Reference), но я не увидел новые классы в моем intellisense.
2) По какой-то причине, пока я не сделал сборку проекта, я не получил все классы в intellisense (не знаю почему).