Я создал схему как согласованный интерфейс между нашей компанией и внешней компанией. Сейчас я создаю веб-службу 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 в моей тестовой клиентской программе прокси (Service Reference), но я не увидел новые классы в моем intellisense. 2) По какой-то причине, пока я не построил проект, я не получил все классы в intellisense (не знаю почему).