Как настроить каналы с помощью поставщика 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 вручную для добавления атрибутов настройки каналов
В окне Обозреватель решений щелкните правой кнопкой мыши файл Northwind.edmx и выберите команду Открыть с помощью.
В диалоговом окне Открыть с помощью — Northwind.edmx выберите Редактор XML и нажмите кнопку ОК.
Найдите элемент 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>
Сохраните изменения и закройте файл Northwind.edmx.
Щелкните файл Northwind.edmx правой кнопкой мыши и выберите команду Пользовательское средство. (Необязательно.)
При этом будет повторно сформирован файл уровня объектов, который может потребоваться.
Перекомпилируйте проект.
Пример
Предыдущий пример возвращает следующий результат для 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>