Procédure : personnaliser des flux avec le fournisseur Entity Framework (WCF Data Services)
Services de données WCF vous permet de personnaliser la sérialisation Atom dans une réponse du service de données pour pouvoir mapper les propriétés d'une entité aux éléments inutilisés définis dans le protocole AtomPub. Cette rubrique montre comment définir des attributs de mappage pour les types d'entité dans un modèle de données défini dans un fichier .edmx à l'aide du fournisseur Entity Framework. Pour plus d'informations, consultez Personnalisation de flux (WCF Data Services).
Dans cette rubrique vous modifierez manuellement le fichier .edmx généré par un outil qui contient le modèle de données. Vous devez modifier manuellement le fichier car les extensions vers le modèle de données ne sont pas prises en charge par le Concepteur d'entités. Pour plus d'informations sur le fichier .edmx généré par les outils Entity Data Model, consultez .edmx File Overview (Entity Framework). L'exemple dans cette rubrique utilise l'exemple de service de données Northwind et des classes de service de données client générées automatiquement. Ce service et les classes de données clientes sont créés lorsque vous complétez le démarrage rapide WCF Data Services.
Pour modifier manuellement le fichier Northwind.edmx pour ajouter des attributs de personnalisation de flux
Dans l'Explorateur de solutions, cliquez avec le bouton droit sur le fichier Northwind.edmx, puis cliquez sur Ouvrir avec.
Dans la boîte de dialogue Ouvrir avec- Northwind.edmx, sélectionnez Éditeur XML, puis cliquez sur OK.
Localisez l'élément ConceptualModels et remplacez le type d'entité
Customers
existant par l'élément suivant qui contient des attributs de mappage de personnalisation de flux :<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>
Enregistrez les modifications et fermez le fichier Northwind.edmx.
(Facultatif) Cliquez avec le bouton droit sur le fichier Northwind.edmx puis cliquez sur Exécuter un outil personnalisé.
Cette opération régénère le fichier de couche objet qui peut être obligatoire.
Recompilez le projet.
Exemple
L'exemple précédent retourne le résultat suivant pour l'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>