Поделиться через


Как настроить каналы с помощью поставщика Entity Framework (службы WCF Data Services)

Службы Службы WCF Data Services позволяют настроить сериализацию Atom в ответе службы данных так, чтобы свойства сущности сопоставлялись с неиспользуемыми элементами, определенными в протоколе AtomPub. Этот раздел показывает, как настроить атрибуты сопоставления типов сущностей в модели данных, определенных в файле EDMX, с помощью поставщика Entity Framework. Дополнительные сведения см. в разделе Настройка канала (службы WCF Data Services).

В этом разделе мы вручную изменим сформированный программой файл EDMX, содержащий модель данных. Поскольку расширения модели данных не поддерживаются конструктором сущностей, необходимо вручную модифицировать этот файл. Дополнительные сведения о файле EDMX, порождаемом инструментальными средствами модели EDM, см. в разделе .edmx File Overview (Entity Framework). Пример в этом разделе использует образец службы данных Northwind и автоматически сформированные клиентские классы службы данных. Эта служба и клиентские классы данных создаются после выполнения действий, описанных в разделе Краткое руководство по службам WCF Data Services.

Изменение файла Northwind.edmx вручную для добавления атрибутов настройки каналов

  1. В окне Обозреватель решений щелкните правой кнопкой мыши файл Northwind.edmx и выберите команду Открыть с помощью.

  2. В диалоговом окне Открыть с помощью — Northwind.edmx выберите Редактор XML и нажмите кнопку ОК.

  3. Найдите элемент ConceptualModels и замените имеющийся тип сущности Customers на элемент, содержащий атрибуты сопоставления для настройки канала.

    <EntityType Name="Customer"
                m:FC_SourcePath="CustomerID"
                m:FC_TargetPath="SyndicationTitle"
                m:FC_ContentKind="text"
                m:FC_KeepInContent="true">
      <Key>
        <PropertyRef Name="CustomerID" />
      </Key>
      <Property Name="CustomerID" Type="String" Nullable="false" MaxLength="5" 
                Unicode="true" FixedLength="true" />
      <Property Name="ContactName" Type="String" MaxLength="30"
          Unicode="true" FixedLength="false"
          m:FC_TargetPath="SyndicationAuthorName"
          m:FC_ContentKind="text"
          m:FC_KeepInContent="true"
          />
      <Property Name="CompanyName" Type="String" Nullable="false"
                MaxLength="40" Unicode="true" FixedLength="false"
                m:FC_TargetPath="CompanyName"
                m:FC_NsPrefix="Northwind"
                m:FC_NsUri="http://schemas.examples.microsoft.com/dataservices"
                m:FC_KeepInContent="true"
          />
      <Property Name="ContactTitle" Type="String" MaxLength="30" Unicode="true" FixedLength="false" 
                m:FC_TargetPath="SyndicationLinkHref"
                m:FC_ContentKind="text"
                m:FC_KeepInContent="true"
                m:FC_Criteria="SyndicationLinkRel"
                m:FC_CriteriaValue="http://NorthwindTraders.com/MyPhotos" />
      <Property Name="Address" Type="String" MaxLength="60" Unicode="true" FixedLength="false" />
      <Property Name="City" Type="String" MaxLength="15" Unicode="true" FixedLength="false" />
      <Property Name="Region" Type="String" MaxLength="15" Unicode="true" FixedLength="false" />
      <Property Name="PostalCode" Type="String" MaxLength="10" Unicode="true" FixedLength="false" />
      <Property Name="Country" Type="String" MaxLength="15" Unicode="true" FixedLength="false" />
      <Property Name="Phone" Type="String" MaxLength="24" Unicode="true" FixedLength="false" />
      <Property Name="Fax" Type="String" MaxLength="24" Unicode="true" FixedLength="false" />
      <NavigationProperty Name="Orders" Relationship="NorthwindModel.FK_Orders_Customers" 
                          FromRole="Customers" ToRole="Orders" />
    </EntityType>
    
  4. Сохраните изменения и закройте файл Northwind.edmx.

  5. Щелкните файл Northwind.edmx правой кнопкой мыши и выберите команду Пользовательское средство. (Необязательно.)

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

  6. Перекомпилируйте проект.

Пример

Предыдущий пример возвращает следующий результат для URI http://myservice/ Northwind.svc/Customers('ALFKI').

<entry xml:base="https://localhost:12345/Northwind.svc/" 
       xmlns:d="https://schemas.microsoft.com/ado/2007/08/dataservices" 
       xmlns:m="https://schemas.microsoft.com/ado/2007/08/dataservices/metadata" 
       xmlns="http://www.w3.org/2005/Atom">
  <id>https://localhost:12345/Northwind.svc/Customers('ALFKI')</id>
  <title type="text">ALFKI</title>
  <updated>2009-07-27T07:59:43Z</updated>
  <author>
    <name>Peter Franken</name>
  </author>
  <link rel="edit" title="Customers" href="Customers('ALFKI')" />
  <link rel="https://schemas.microsoft.com/ado/2007/08/dataservices/related/Orders" 
        type="application/atom+xml;type=feed" title="Orders" 
        href="Customers('ALFKI')/Orders" />
  <category term="NorthwindModel.Customers" 
            scheme="https://schemas.microsoft.com/ado/2007/08/dataservices/scheme" />
  <content type="application/xml">
    <m:properties>
      <d:ContactName>Peter Franken</d:ContactName>
      <d:CompanyName>Alfreds Futterkiste</d:CompanyName>
      <d:ContactTitle>Marketing Manager</d:ContactTitle>
      <d:Address>Obere Str. 57</d:Address>
      <d:City>Berlin</d:City>
      <d:Region m:null="true" />
      <d:PostalCode>12209</d:PostalCode>
      <d:Country>Germany</d:Country>
      <d:Phone>089-0877310</d:Phone>
      <d:Fax>089-0877554</d:Fax>
    </m:properties>
  </content>
  <Northwind:CompanyName 
    xmlns:Northwind="http://schemas.examples.microsoft.com/dataservices">Alfreds Futterkiste</Northwind:CompanyName>
</entry>

См. также

Основные понятия

Поставщик Entity Framework (службы WCF Data Services)