He creado un esquema como una interfaz acordada entre nuestra empresa y una empresa externa. Ahora estoy creando un servicio web WCF C# para manejar la interfaz.xsd.exe - esquema a clase - para uso con WCF
Ejecuté la utilidad XSD y creó una clase C#. El esquema se creó en BizTalk y hace referencia a otros esquemas, por lo que se generaron más de 15 clases.
Puse el atributo [DataContract} al frente de cada una de las clases. ¿Tengo que poner el atributo [DataMember] en cada propiedad individual?
Cuando genero un programa cliente de prueba, el proxy no tiene ningún código para ninguna de estas 15 clases.
Solíamos usar esta técnica cuando usamos servicios .asmx, pero no estamos seguros si funcionará igual con WCF. Si cambiamos el esquema, nos gustaría regenerar la clase WCF, y luego tendríamos que volver a redecorarlo con todos los atributos [DataMember]? ¿Hay alguna herramienta más nueva similar a XSD.exe que funcione mejor con WCF?
Gracias,
Neal Walters
SOLUCIÓN (enterrado en una de respuesta Saunders/comentarios):
Añadir la XmlSerializerFormat a la definición de interfaz:
[OperationContract]
[XmlSerializerFormat] // ADD THIS LINE
Transaction SubmitTransaction(Transaction transactionIn);
Dos notas: 1) Después de hacer esto, vi mucho más .xsds en mi proxy (Se rvice Reference) prueba el programa del cliente, pero no vi las nuevas clases en mi intellisense. 2) Por alguna razón, hasta que construí el proyecto, no obtuve todas las clases en intellisense (no estoy seguro de por qué).
1) Cuando se genero un programa cliente de prueba, el proxy no tiene ningún código para cualquiera de estas 15 clases. Tengo entendido que WCF requiere que [DataContract] y [DataMember] expongan correctamente. Todos los elementos están bien conmigo. 2) Estoy totalmente de acuerdo con que no quiero cambiar el código, por eso publiqué la pregunta. 3) ¿Qué debo buscar para obtener más información sobre XmlSerializer? ¿Genera código C# a partir de archivos .xsd? Puede que lo haya utilizado por última vez, pero necesito acceder a mi gmail (bloqueado aquí). – NealWalters
Utilice [XmlSerializerFormat] en cada operación del servicio web que requiera Serialización XML. La utilidad XSD ya ha hecho todo el trabajo por usted. –
@Downvoter: ¿razón para el voto a favor? –