Проблема со схемой WCF - PullRequest
       5

Проблема со схемой WCF

0 голосов
/ 17 февраля 2012

Ниже приведена схема услуги.

<xs:element name="StartDate" type="tns:DateType">
  <xs:annotation>
    <xs:documentation>The start date of the planning item in question</xs:documentation>
  </xs:annotation>
</xs:element>
<xs:complexType name="DateType">
  <xs:annotation>
    <xs:documentation>
      0 - Hard Date (Use the date defined by the year, month and day attributes
      2 - Retirement
      3 - Death
      4 - Disability
      5 - Long Term Care
    </xs:documentation>
  </xs:annotation>
  <xs:sequence>
    <xs:element name="Date">
      <xs:complexType>
        <xs:attribute name="date_type" use="optional" default="0">
          <xs:simpleType>
            <xs:restriction base="xs:int">
              <xs:enumeration value="0">
                <xs:annotation>
                  <xs:documentation>Hard Date (Use the date defined by the year, month and day attributes</xs:documentation>
                </xs:annotation>
              </xs:enumeration>
              <xs:enumeration value="2">
                <xs:annotation>
                  <xs:documentation>Retirement</xs:documentation>
                </xs:annotation>
              </xs:enumeration>
              <xs:enumeration value="3">
                <xs:annotation>
                  <xs:documentation>Death</xs:documentation>
                </xs:annotation>
              </xs:enumeration>
              <xs:enumeration value="4">
                <xs:annotation>
                  <xs:documentation>Disability</xs:documentation>
                </xs:annotation>
              </xs:enumeration>
              <xs:enumeration value="5">
                <xs:annotation>
                  <xs:documentation>Long Term Care</xs:documentation>
                </xs:annotation>
              </xs:enumeration>
            </xs:restriction>
          </xs:simpleType>
        </xs:attribute>
      </xs:complexType>
    </xs:element>
  </xs:sequence>
</xs:complexType>

Это прокси-класс

публичный частичный класс DateTypeDate {

    private int date_typeField;


    public DateTypeDate()
    {
        this.date_typeField = 0;
    }

    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    [System.ComponentModel.DefaultValueAttribute(0)]
    public int date_type
    {
        get
        {
            return this.date_typeField;
        }
        set
        {
            this.date_typeField = value;
        }
    }


}

У меня есть требование, где нам нужно отправить значение 0 в date_type.

1 - я попробовал следующее, предполагая, что по умолчанию ему должно быть присвоено значение "0".

   StartDate = new DateType();
   DateTypeDate date = new DateTypeDate();

2- Затем я явно назначаю значение "date_type" для 0

StartDate = new DateType();
   DateTypeDate date = new DateTypeDate();
   date.date_type = 0;
   StartDate.Date = date;

В обоих случаях узел "date_type" не появляется в фактическом xml-запросе, отправляемом в сервис. Это запрос xml, который генерируется.

    <StartDate>
    <Date></Date>
    </StartDate>

But if i assign a different value than 0 then i can see the date_type node. for example 

    <StartDate>
     <Date date_type="2"></Date>
     </StartDate>


Would you able to help what could be the reason that node doesn't appear in request xml id i assign it to "0" also is there any way the node can appear without making chnages in schema. Thanks in advance

1 Ответ

0 голосов
/ 29 марта 2012

Я не эксперт по XML-схемам, но мне кажется, что проблема, скорее всего, заключается в следующей строке схемы:

<xs:attribute name="date_type" use="optional" default="0">

Если атрибут является необязательным, это означает, что клиент не должен его отправлять. Попробуйте сделать это вместо этого.

...