XSD 정의로 데이터 형식을 만듭니다. 그런 다음이 xsd 파일을 WebSphere Application Server로 가져옵니다.WCF xsd 데이터 형식을 기반으로하는 계약
WebSphere Application Server가 이러한 데이터 유형을 사용하여 WCF 웹 서비스를 호출 할 수있게하려고합니다. xsd.exe를 통해이를 실행
이<xs:simpleType name="Stillingsprosent">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:element name="gjennomsnittStillingsprosent" type="Stillingsprosent" minOccurs="0" maxOccurs="1"/>
다음 C# 코드를 생성합니다 다음과 같이
원래 XSD이었다
public partial class GjennomsnittStillingsprosent {
private double gjennomsnittField;
private bool gjennomsnittFieldSpecified;
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
public double gjennomsnitt {
get {
return this.gjennomsnittField;
}
set {
this.gjennomsnittField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlIgnoreAttribute()]
public bool gjennomsnittSpecified {
get {
return this.gjennomsnittFieldSpecified;
}
set {
this.gjennomsnittFieldSpecified = value;
}
}
}
우리가 다음이 데이터 타입 IA를 사용하는 경우 WCF는 다음을 생산 계약 XSD :
<xs:complexType name="GjennomsnittStillingsprosent">
<xs:sequence>
<xs:element name="gjennomsnittField" type="xs:double"/>
<xs:element name="gjennomsnittFieldSpecified" type="xs:boolean"/>
</xs:sequence>
</xs:complexType>
<xs:element name="GjennomsnittStillingsprosent" nillable="true" type="tns:GjennomsnittStillingsprosent"/>
- 데이터 계약이 원본 xsd와 같아야합니다.
- 생성 후 파일을 편집하지 않아도됩니다. (데이터 모델이 큼)
문제는 minoccurs = 0 인 선택적 필드와 관련이 있으며, 실제로는 null입니다. xsd.exe는 .net에 null 가능 유형이 있기 전에 만들어졌습니다.
WCF 계약에 사용 된 데이터 유형이 XSD에 지정된 데이터 유형과 정확히 일치하도록하려면 어떻게해야합니까?
대답에 대한 답변, 불행히도 문제가 해결되지 않으면 클라이언트와 서버의 계약서에있는 이름이 일치하지 않습니다. –
죄송합니다. 질문의 두 번째 부분 (null 가능)에 응답하고 첫 번째 부분을 찾지 못했습니다 - 지금 답변을 수정하겠습니다 :) – Chris