Настройте OData XML с новым пространством имен - PullRequest
0 голосов
/ 07 ноября 2011

Я пользуюсь услугами WCF Data.

Свойство фида по умолчанию для объекта в моей службе OData:

<feed xml:base="http://localhost:54527/DataModel.svc/" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns="http://www.w3.org/2005/Atom">

Как я могу добавить свои собственные пространства имен в этот список в свойстве канала?

Я пытаюсь сделать мой сервис odata совместимым с GeoRSS, я добавил несколько EntityPropertyMappingAttribute, чтобы сделать данные совместимыми, но они не распознаются используемым нами инструментом.

Прямо сейчас он производит это:

    <?xml version="1.0" encoding="iso-8859-1" standalone="yes"?>
<feed xml:base="http://localhost:54527/DataModel.svc/" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns="http://www.w3.org/2005/Atom">
  <title type="text">Collars</title>
  <id>http://localhost:54527/DataModel.svc/Collars</id>
  <updated>2011-11-07T09:23:05Z</updated>
  <link rel="self" title="Collars" href="Collars" />
  <entry>
    <id>http://localhost:54527/DataModel.svc/Collars(HOLEID='ABL001',PROJECTCODE='ACA')</id>
    <title type="text"></title>
    <updated>2011-11-07T09:23:05Z</updated>
    <author>
      <name />
    </author>
    <link rel="edit" title="Collar" href="Collars(HOLEID='ABL001',PROJECTCODE='ACA')" />
    <category term="Neo.Collar" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" />
    <content type="application/xml">
      <m:properties>
        <d:HOLEID>ABL001</d:HOLEID>
        <d:PROJECTCODE>ACA</d:PROJECTCODE>
        <d:TENEMENTID>5853</d:TENEMENTID>
        <d:LAT>116.49531406</d:LAT>
        <d:LONG>-21.65159678</d:LONG>
      </m:properties>
    </content>
    <geo:lat xmlns:geo="http://www.georss.org/georss">116.49531406</geo:lat>
    <geo:long xmlns:geo="http://www.georss.org/georss">-21.65159678</geo:long>
  </entry>

Но я бы предпочел, чтобы пространство имен geo было вверху:

    <?xml version="1.0" encoding="iso-8859-1" standalone="yes"?>
<feed xml:base="http://localhost:54527/DataModel.svc/" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns="http://www.w3.org/2005/Atom"
xmlns:geo="http://www.georss.org/georss">
  <title type="text">Collars</title>
  <id>http://localhost:54527/DataModel.svc/Collars</id>
  <updated>2011-11-07T09:23:05Z</updated>
  <link rel="self" title="Collars" href="Collars" />
  <entry>
    <id>http://localhost:54527/DataModel.svc/Collars(HOLEID='ABL001',PROJECTCODE='ACA')</id>
    <title type="text"></title>
    <updated>2011-11-07T09:23:05Z</updated>
    <author>
      <name />
    </author>
    <link rel="edit" title="Collar" href="Collars(HOLEID='ABL001',PROJECTCODE='ACA')" />
    <category term="Neo.Collar" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" />
    <content type="application/xml">
      <m:properties>
        <d:HOLEID>ABL001</d:HOLEID>
        <d:PROJECTCODE>ACA</d:PROJECTCODE>
        <d:TENEMENTID>5853</d:TENEMENTID>
        <d:LAT>116.49531406</d:LAT>
        <d:LONG>-21.65159678</d:LONG>
      </m:properties>
    </content>
    <geo:lat>116.49531406</geo:lat>
    <geo:long>-21.65159678</geo:long>
  </entry>

Я мог бы пойти по этому пути совершенно неправильно. Спасибо.

1 Ответ

0 голосов
/ 09 ноября 2011

В настоящее время в службах данных WCF нет возможности сделать это.Сопоставление свойств объекта работает локально (для элемента, с которым оно сопоставлено), и у него нет возможности указать, что некоторые пространства имен должны быть объявлены заранее.

...