Ho creato uno schema come interfaccia concordata tra la nostra azienda e una società esterna. Ora sto creando un servizio web C# WCF per gestire l'interfaccia.xsd.exe - schema per classe - per l'utilizzo con WCF
Ho eseguito l'utilità XSD e ha creato una classe C#. Lo schema è stato creato in BizTalk e fa riferimento ad altri schemi, quindi nel complesso sono state generate oltre 15 classi.
Ho messo l'attributo [DataContract} davanti a ciascuna classe. Devo mettere l'attributo [DataMember] su ogni singola proprietà?
Quando si genera un programma client di test, il proxy non ha alcun codice per nessuna di queste 15 classi.
Abbiamo usato questa tecnica quando si utilizzano i servizi .asmx, ma non siamo sicuri che funzionerà allo stesso modo con WCF. Se cambiamo lo schema, vorremmo rigenerare la classe WCF, e quindi avremmo ogni volta ridichiarlo con tutti gli attributi [DataMember]? C'è un nuovo strumento simile a XSD.exe che funzionerà meglio con WCF?
Grazie,
Neal Walters
SOLUZIONE (sepolto in una delle Saunders risposta/commento):
Aggiungere il XmlSerializerFormat alla definizione di interfaccia:
[OperationContract]
[XmlSerializerFormat] // ADD THIS LINE
Transaction SubmitTransaction(Transaction transactionIn);
Two note: 1) Dopo averlo fatto, ho visto molto più .xsds nel mio proxy (Se rvice Reference) programma client di test, ma non ho visto le nuove classi nel mio intellisense. 2) Per qualche ragione, fino a quando non ho fatto una build sul progetto, non ho ottenuto tutte le classi nell'intelligence (non so perché).
1) Quando ho generare un programma client di test, il proxy non ha alcun codice per una di queste 15 classi. La mia comprensione è che WCF richiede [DataContract] e [DataMember] per esporre correttamente. Tutti gli elementi vanno bene con me. 2) Sono assolutamente d'accordo sul fatto di non voler cambiare il codice, ecco perché ho postato la domanda. 3) Cosa devo cercare per saperne di più su XmlSerializer? Genera codice C# dai file .xsd? Potrei averlo usato all'ultimo client, ma devo accedere al mio gmail (bloccato qui). – NealWalters
Utilizzare [XmlSerializerFormat] in ogni operazione di servizio Web che richiede la serializzazione XML. L'utilità XSD ha già fatto tutto il resto per te. –
@Downvoter: motivo del downvote? –