c# – xsd.exe – 架构到类 – 用于WCF

我已经创建了一个模式,作为我们公司和外部公司之间商定的接口.我现在正在创建一个WCF C#Web服务来处理该接口.

我运行了XSD实用程序,它创建了一个C#类.模式是在BizTalk中构建的,并引用其他模式,因此总共生成了超过15个类.

我将[DataContract}属性放在每个类的前面.
我是否必须在每个属性上放置[DataMember]属性
当我生成测试客户端程序时,代理没有任何这15个类的代码.

我们曾经在使用.asmx服务时使用这种技术,但不确定它是否与WCF一样.如果我们更改架构,我们会想要重新生成WCF类,然后我们每次都要使用所有[DataMember]属性重新调整它?是否有一个类似于XSD.exe的新工具可以更好地与WCF一起使用?

谢谢,

尼尔沃尔特斯

解决方案(埋在桑德斯之一回答/评论):

将XmlSerializerFormat添加到Interface定义:

[OperationContract]
    [XmlSerializerFormat]     // ADD THIS LINE 
    Transaction SubmitTransaction(Transaction transactionIn);

两个笔记:
1)在我这样做之后,我在我的代理(服务参考)测试客户端程序中看到了更多.xsds,但是我没有看到我的intellisense中的新类.
2)出于某种原因,在我对项目进行构建之前,我没有得到intellisense中的所有类(不确定原因).

解决方法

使用[DataContract]的类将序列化为非常有限的模式.例如,没有属性,只有元素.这是有意的,并且是为了性能和互操作性而完成的.

通常,您可能正在使用的那种模式可能要复杂得多.此类架构不适用于Data Contract Serializer.您将需要使用XML Serializer.

特别是,不要编辑由XSD.EXE创建的类.实际上,您永远不应该编辑生成代码,因为只要再次生成代码,您的编辑就会被删除.这些类应该已经拥有WCF使用它们所需的属性.

如果您按原样使用它们会发生什么?

相关文章

目录简介使用JS互操作使用ClipLazor库创建项目使用方法简单测...
目录简介快速入门安装 NuGet 包实体类User数据库类DbFactory...
本文实现一个简单的配置类,原理比较简单,适用于一些小型项...
C#中Description特性主要用于枚举和属性,方法比较简单,记录...
[TOC] # 原理简介 本文参考[C#/WPF/WinForm/程序实现软件开机...
目录简介获取 HTML 文档解析 HTML 文档测试补充:使用 CSS 选...