Démarrage rapide de Data Service (ADO.NET Data Services Framework)
Les procédures de cette rubrique vous permettront d'utiliser ADO.NET Data Services afin de créer et de tester un service de données qui se connecte à l'exemple de base de données Northwind.
Pour créer cet exemple de service de données, assurez-vous d'abord que les composants requis, listés dans la section Composants requis de cette rubrique, ont bien été installés sur votre ordinateur. Pour créer ce service de données, procédez comme suit :
Créez une application Web ASP.NET.
Créez le modèle EDM (Entity Data Model) et connectez ce modèle à la base de données.
Créez le service de données dans l'application Web.
Activez l'accès au service de données.
Après avoir créé et activé le service de données en utilisant ces procédures, vous pouvez essayer l'exemple de service de données que vous avez implémenté.
Configuration requise
Pour créer un service de données à l'aide d'ADO.NET Data Services framework, les composants suivants doivent être installés sur votre ordinateur :
ADO.NET Data Services et ADO.NET Entity Framework. Les deux composants sont installés lorsque vous installez Microsoft .NET Framework 3.5 Service Pack 1 (SP1) ou versions ultérieures.
ADO.NET Data Services framework est composé de composants d'exécution et d'accès aux données. Le composant d'exécution implémente la traduction d'URI, les formats de transport AtomPub et JSON ainsi que le protocole d'interaction. Le composant d'accès aux données prend en charge la communication entre les composants à l'aide de l'interface IQueryable<T>. Un jeu de conventions mappe des types CLR (common language runtime) sur la syntaxe URI et les protocoles de la charge utile utilisés par ADO.NET Data Services.
Outils d'Entity Framework. Ces outils sont inclus dans Visual Studio 2008 Service Pack 1 (SP1).
Fournisseurs d'accès aux données ADO.NET. Ces fournisseurs sont pris en charge par n'importe quelle version de Microsoft SQL Server 2005. Cela comprend SQL Server Express.
Exemple de base de données Northwind. Pour télécharger cet exemple de base de données, consultez la page de téléchargement, Exemples de bases de données pour SQL Server.
Créer l'application Web ASP.NET.
ADO.NET Data Services est une version spéciale des services de Windows Communication Foundation. ADO.NET Data Services s'exécute dans les sites ASP.NET.
Si vous avez déjà une application Web ASP.NET et préférez ajouter l'exemple de service de données à l'application existante, vous pouvez ignorer les étapes suivantes et passer à la section suivante, Créer le modèle EDM (Entity Data Model).
Remarque |
---|
Les procédures suivantes utilisent les versions Standard, Professional et Team System de Visual Studio 2008 SP1. Si vous utilisez Visual Studio Web Developer, vous devrez créer un nouveau site Web au lieu d'une nouvelle application Web. |
Dans Visual Studio, dans le menu Fichier, sélectionnez Nouveau, puis Projet.
Dans la boîte de dialogue Nouveau projet, sélectionnez Visual Basic ou Visual C# comme langage de programmation.
Dans le volet Modèles, sélectionnez Application Web ASP.NET.
Tapez un nom, tel que SimpleDataService, pour le projet.
Cliquez sur OK.
Créer le modèle EDM (Entity Data Model)
Pour créer un modèle EDM basé sur une base de données relationnelle à l'aide de ADO.NET Entity Framework :
Dans l'Explorateur de solutions, cliquez avec le bouton droit sur le nom du projet ASP.NET que vous venez de créer puis cliquez sur Ajouter un nouvel élément.
Dans la boîte de dialogue Ajouter un nouvel élément , sélectionnez Entity Data Model ADO.NET.
Tapez Northwind pour le nom du modèle de données.
Northwind.edmx est le nom de fichier pour le modèle de données créé par l'Assistant EDM. Le schéma du modèle de données créé effectue un mappage de type un-à-un avec l'exemple de base de données Northwind.
Dans l'Assistant EDM, sélectionnez Générer à partir de la base de données, puis cliquez sur Suivant.
Connectez le modèle de données à la base de données en suivant l'une des étapes suivantes puis cliquez sur Suivant :
Si vous n'avez pas une connexion de base de données déjà configurée, cliquez sur Nouvelle connexion puis créez une nouvelle connexion.
Remarque Si vous utilisez SQL Server 2005, il est recommandé de définir l'option MultipleActiveResultSets sur true. Si cette option n'est pas définie sur true dans la chaîne de connexion, dans la boîte de dialogue Propriétés des connexions, cliquez sur Avancé, puis localisez l'option MultipleActiveResultSets sur true.
—ou—
Si vous avez une connexion de base de données déjà configurée pour vous connecter à la base de données Northwind, sélectionnez cette connexion dans la liste des connexions.
Dans la page finale de l'Assistant, activez les cases à cocher pour toutes les tables de la base de données puis désactivez les cases pour les vues et les procédures stockées.
La page finale de l'Assistant affiche une liste de tables, vues et procédures stockées disponibles à partir de la base de données. Pour que le modèle de données que vous créez dans cette rubrique reste simple, sélectionnez uniquement les tables.
Cliquez sur Terminer pour fermer l'Assistant.
L'Assistant génère les fichiers qui représentent les métadonnées de base de données et ajoute ces fichiers au projet.
Créer le service de données
La création d'un service de données ADO.NET déploie le modèle de données créé lors de l'étape précédente comme un service accessible par le protocole Internet.
Pour créer le service de données :
Dans l'Explorateur de solutions, cliquez avec le bouton droit sur le nom de votre projet ASP.NET puis cliquez sur Ajouter un nouvel élément.
Dans cette boîte de dialogue Ajouter un nouvel élément, sélectionnez ADO.NET Data Service.
Remarque Veillez à sélectionner ADO.NET Data Service, et non d'autres options similaires, comme le service Web.
Tapez Northwind pour le nom du service.
Visual Studio crée le balisage XML et des fichiers de code pour le nouveau service. La fenêtre de l'éditeur de code s'ouvre par défaut. Dans l'Explorateur de solutions, le service aura le nom, Northwind, avec l'extension .svc.cs ou .svc.vb.
Au début du code pour le service de données, procédez de l'une des façons suivantes pour inclure l'espace de noms des classes du modèle de données générées par l'Assistant EDM :
Si votre application ASP.NET utilise Visual Basic, ajoutez une instruction
imports
.Si votre application ASP.NET utilise C#, ajoutez une instruction
using
.
L'Explorateur d'objets de Visual Studio affiche l'espace de noms dérivé de la base de données utilisée par le service de données. Dans cet exemple, la base de données est nommée Northwind et l'espace de noms NorthwindModel.
Dans le code pour le service de données, localisez le commentaire "TODO" et remplacez celui-ci par le nom de la classe générée par l'Assistant EDM.
Dans cet exemple, le nom de la classe générée par l'Assistant EDM est NorthwindEntities dans l'espace de noms NorthwindModel.
Activer l'accès au service de données.
Par défaut, le service de données ne permet pas l'accès à aucune ressource. L'accès doit être activé de manière explicite avant que le service de données ne puisse retourner des données.
Pour activer l'accès en lecture et en écriture pour toutes les ressources qui sont associées au service, recherchez la fonction InitializeService
dans la classe dérivée de DataService. Ajoutez à cette fonction le code qui est requis pour définir les droits d'accès aux ressources pour le conteneur sur Tous. Dans C#, ajoutez la ligne config.SetResourceContainerAccessRule("*", ResourceContainerRights.All)
, à la fonction InitializeService
, comme le montre le code suivant :
using System;
using System.Collections.Generic;
using System.Data.Services;
using System.Linq;
using System.ServiceModel.Web;
using System.Web;
using NorthwindModel;
namespace SimpleDataService
{
public class Northwind : DataService< NorthwindModel.NorthwindEntities >
{
// This method is called only once to initialize service-wide policies.
public static void InitializeService(IDataServiceConfiguration config)
{
// TODO: set rules to indicate which entity sets and
// service operations are visible and updatable.
// Use *(all sets) only for testing.
config.SetEntitySetAccessRule("*", EntitySetRights.AllRead);
}
}
}
Vous pouvez à présent exécuter le service depuis Visual Studio. Appuyez sur F5 pour lancer le serveur Web de développement. La section suivante explique comment utiliser le service de données récemment créé.
Essayer le service de données
Pour les besoins de cet exemple, utilisez un navigateur Web pour interagir avec le service de données. Un navigateur Web est un moyen simple d'expérimenter la syntaxe d'adressage des demandes et d'afficher les résultats. Toutefois, un navigateur Web n'est pas la méthode que la plupart des applications utilisent pour interagir avec le service de données lorsqu'il est terminé et en cours d'utilisation. Généralement, les applications interagissent avec le service de données par le biais de code ou de langages de script.
Remarque |
---|
Pour plus d'informations sur la syntaxe HTTP utilisée par ADO.NET Data Services, consultez Modèle d'adressage simple pour les données avec des URI uniformes (ADO.NET Data Services Framework) et Applications clientes d'ADO.NET Data Services. |
Récupérer le document du service par défaut
Par défaut, le document XML retourné par le service de données est un document du service AtomPub. AtomPub est la méthode de sérialisation par défaut. Pour plus d'informations sur le protocole ATOM, consultez le site d'équipe d'ADO.NET Data Services.
Pour demander le document du service par défaut :
Ouvrez un navigateur Web puis entrez un URI similaire à l'exemple d'URI suivant, en substituant le numéro de port pour correspondre à votre environnement de développement :
https://localhost:50781/northwind.svc
Si les règles d'accès ont été définies conformément au URI précédent, le service de données retourne le document du service par défaut au navigateur. Ce document du service par défaut contient une liste de jeux d'entités qui représente les données de Northwind déployées par le service de données. Ce document du service par défaut se présentera comme l'exemple XML suivant :
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<service xml:base="https://localhost:1365/Northwind.svc/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:app="http://www.w3.org/2007/app" xmlns="http://www.w3.org/2007/app">
<workspace>
<atom:title>Default</atom:title>
<collection href="Categories">
<atom:title>Categories</atom:title>
</collection>
<collection href="CustomerDemographics">
<atom:title>CustomerDemographics</atom:title>
</collection>
<collection href="Customers">
<atom:title>Customers</atom:title>
</collection>
<collection href="Employees">
<atom:title>Employees</atom:title>
</collection>
<collection href="Order_Details">
<atom:title>Order_Details</atom:title>
</collection>
<collection href="Orders">
<atom:title>Orders</atom:title>
</collection>
<collection href="Products">
<atom:title>Products</atom:title>
</collection>
<collection href="Region">
<atom:title>Region</atom:title>
</collection>
<collection href="Shippers">
<atom:title>Shippers</atom:title>
</collection>
<collection href="Suppliers">
<atom:title>Suppliers</atom:title>
</collection>
<collection href="Territories">
<atom:title>Territories</atom:title>
</collection>
</workspace>
</service>
Récupérer un jeu d'entités
Pour explorer le contenu du service de données, utilisez les jeux d'entités dans le document du service par défaut comme point de départ. Par exemple, certains jeux d'entités dans le document du service par défaut pour l'exemple de service de données sont Products
, Shippers
et Territories
. Vous pouvez facilement retourner toutes les entités dans un de ces jeux d'entités.
Pour demander une liste de produits
Dans le navigateur Web, entrez l'URI suivant :
https://localhost/northwind.svc/Products
En ajoutant /Products
à l'URI, l'URI retourne tous les produits en stockage. Le code XML suivant affiche les quatre premiers produits retournés, ce qui représente un listing partiel des résultats :
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<feed xml:base="https://localhost:1365/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">
<title type="text">Products</title>
<id>https://localhost:1365/Northwind.svc/Products</id>
<updated>2008-05-22T16:42:14Z</updated>
<link rel="self" title="Products" href="Products" />
<entry m:type="NorthwindModel.Products">
<id>https://localhost:1365/Northwind.svc/Products(1)</id>
<title type="text"></title>
<updated>2008-05-22T16:42:14Z</updated>
<author>
<name />
</author>
<link rel="edit" title="Products" href="Products(1)" />
<link rel="https://schemas.microsoft.com/ado/2007/08/dataservices/related/Categories"
type="application/atom+xml;type=entry" title="Categories" href="Products(1)/Categories" />
<link rel="https://schemas.microsoft.com/ado/2007/08/dataservices/related/Order_Details"
type="application/atom+xml;type=feed" title="Order_Details" href="Products(1)/Order_Details" />
<link rel="https://schemas.microsoft.com/ado/2007/08/dataservices/related/Suppliers"
type="application/atom+xml;type=entry" title="Suppliers" href="Products(1)/Suppliers" />
<content type="application/xml">
<m:properties>
<d:Discontinued m:type="Edm.Boolean">false</d:Discontinued>
<d:ProductID m:type="Edm.Int32">1</d:ProductID>
<d:ProductName>Chai</d:ProductName>
<d:QuantityPerUnit>10 boxes x 20 bags</d:QuantityPerUnit>
<d:ReorderLevel m:type="Edm.Int16">10</d:ReorderLevel>
<d:UnitPrice m:type="Edm.Decimal">18.0000</d:UnitPrice>
<d:UnitsInStock m:type="Edm.Int16">36</d:UnitsInStock>
<d:UnitsOnOrder m:type="Edm.Int16">0</d:UnitsOnOrder>
</m:properties>
</content>
</entry>
<entry m:type="NorthwindModel.Products">
<id>https://localhost:1365/Northwind.svc/Products(2)</id>
<title type="text"></title>
<updated>2008-05-22T16:42:14Z</updated>
<author>
<name />
</author>
<link rel="edit" title="Products" href="Products(2)" />
<link rel="https://schemas.microsoft.com/ado/2007/08/dataservices/related/Categories"
type="application/atom+xml;type=entry" title="Categories" href="Products(2)/Categories" />
<link rel="https://schemas.microsoft.com/ado/2007/08/dataservices/related/Order_Details"
type="application/atom+xml;type=feed" title="Order_Details" href="Products(2)/Order_Details" />
<link rel="https://schemas.microsoft.com/ado/2007/08/dataservices/related/Suppliers"
type="application/atom+xml;type=entry" title="Suppliers" href="Products(2)/Suppliers" />
<content type="application/xml">
<m:properties>
<d:Discontinued m:type="Edm.Boolean">false</d:Discontinued>
<d:ProductID m:type="Edm.Int32">2</d:ProductID>
<d:ProductName>Chang</d:ProductName>
<d:QuantityPerUnit>24 - 12 oz bottles</d:QuantityPerUnit>
<d:ReorderLevel m:type="Edm.Int16">25</d:ReorderLevel>
<d:UnitPrice m:type="Edm.Decimal">19.0000</d:UnitPrice>
<d:UnitsInStock m:type="Edm.Int16">28</d:UnitsInStock>
<d:UnitsOnOrder m:type="Edm.Int16">40</d:UnitsOnOrder>
</m:properties>
</content>
</entry>
<entry m:type="NorthwindModel.Products">
<id>https://localhost:1365/Northwind.svc/Products(3)</id>
<title type="text"></title>
<updated>2008-05-22T16:42:14Z</updated>
<author>
<name />
</author>
<link rel="edit" title="Products" href="Products(3)" />
<link rel="https://schemas.microsoft.com/ado/2007/08/dataservices/related/Categories"
type="application/atom+xml;type=entry" title="Categories" href="Products(3)/Categories" />
<link rel="https://schemas.microsoft.com/ado/2007/08/dataservices/related/Order_Details"
type="application/atom+xml;type=feed" title="Order_Details" href="Products(3)/Order_Details" />
<link rel="https://schemas.microsoft.com/ado/2007/08/dataservices/related/Suppliers"
type="application/atom+xml;type=entry" title="Suppliers" href="Products(3)/Suppliers" />
<content type="application/xml">
<m:properties>
<d:Discontinued m:type="Edm.Boolean">false</d:Discontinued>
<d:ProductID m:type="Edm.Int32">3</d:ProductID>
<d:ProductName>Aniseed Syrup</d:ProductName>
<d:QuantityPerUnit>12 - 550 ml bottles</d:QuantityPerUnit>
<d:ReorderLevel m:type="Edm.Int16">25</d:ReorderLevel>
<d:UnitPrice m:type="Edm.Decimal">10.0000</d:UnitPrice>
<d:UnitsInStock m:type="Edm.Int16">65</d:UnitsInStock>
<d:UnitsOnOrder m:type="Edm.Int16">70</d:UnitsOnOrder>
</m:properties>
</content>
</entry>
<entry m:type="NorthwindModel.Products">
<id>https://localhost:1365/Northwind.svc/Products(4)</id>
<title type="text"></title>
<updated>2008-05-22T16:42:14Z</updated>
<author>
<name />
</author>
<link rel="edit" title="Products" href="Products(4)" />
<link rel="https://schemas.microsoft.com/ado/2007/08/dataservices/related/Categories"
type="application/atom+xml;type=entry" title="Categories" href="Products(4)/Categories" />
<link rel="https://schemas.microsoft.com/ado/2007/08/dataservices/related/Order_Details"
type="application/atom+xml;type=feed" title="Order_Details" href="Products(4)/Order_Details" />
<link rel="https://schemas.microsoft.com/ado/2007/08/dataservices/related/Suppliers"
type="application/atom+xml;type=entry" title="Suppliers" href="Products(4)/Suppliers" />
<content type="application/xml">
<m:properties>
<d:Discontinued m:type="Edm.Boolean">false</d:Discontinued>
<d:ProductID m:type="Edm.Int32">4</d:ProductID>
<d:ProductName>Chef Anton's Cajun Seasoning</d:ProductName>
<d:QuantityPerUnit>48 - 6 oz jars</d:QuantityPerUnit>
<d:ReorderLevel m:type="Edm.Int16">0</d:ReorderLevel>
<d:UnitPrice m:type="Edm.Decimal">22.0000</d:UnitPrice>
<d:UnitsInStock m:type="Edm.Int16">6</d:UnitsInStock>
<d:UnitsOnOrder m:type="Edm.Int16">0</d:UnitsOnOrder>
</m:properties>
</content>
</entry>
</feed>
Récupérer une entité unique
Non seulement vous pouvez retourner une liste d'entités dans un jeu d'entités mais vous pouvez aussi demander une entité spécifique. L' URI d'une entité individuelle se compose de l'URI de base du service suivi du nom du jeu d'entités et ensuite de l'ID finale de l'entité. L'ID de l'entité est une valeur de clé entre parenthèses.
Pour demander le produit dont l'ID est 1 :
Dans le navigateur Web, entrez l'URI suivant :
http://host/vdir/northwind.svc/Products(1)
L'URI que vous venez d'entrer dans le navigateur récupère le produit avec une ID de 1. Le code XML suivant affiche les résultats de cette demande :
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<entry xml:base="https://localhost:1365/Northwind.svc/"
xmlns:d="https://schemas.microsoft.com/ado/2007/08/dataservices"
xmlns:m="https://schemas.microsoft.com/ado/2007/08/dataservices/metadata"
m:type="NorthwindModel.Products" xmlns="http://www.w3.org/2005/Atom">
<id>https://localhost:1365/Northwind.svc/Products(1)</id>
<title type="text"></title>
<updated>2008-05-22T16:47:12Z</updated>
<author>
<name />
</author>
<link rel="edit" title="Products" href="Products(1)" />
<link rel="https://schemas.microsoft.com/ado/2007/08/dataservices/related/Categories"
type="application/atom+xml;type=entry" title="Categories" href="Products(1)/Categories" />
<link rel="https://schemas.microsoft.com/ado/2007/08/dataservices/related/Order_Details"
type="application/atom+xml;type=feed" title="Order_Details" href="Products(1)/Order_Details" />
<link rel="https://schemas.microsoft.com/ado/2007/08/dataservices/related/Suppliers"
type="application/atom+xml;type=entry" title="Suppliers" href="Products(1)/Suppliers" />
<content type="application/xml">
<m:properties>
<d:Discontinued m:type="Edm.Boolean">false</d:Discontinued>
<d:ProductID m:type="Edm.Int32">1</d:ProductID>
<d:ProductName>Chai</d:ProductName>
<d:QuantityPerUnit>10 boxes x 20 bags</d:QuantityPerUnit>
<d:ReorderLevel m:type="Edm.Int16">10</d:ReorderLevel>
<d:UnitPrice m:type="Edm.Decimal">18.0000</d:UnitPrice>
<d:UnitsInStock m:type="Edm.Int16">36</d:UnitsInStock>
<d:UnitsOnOrder m:type="Edm.Int16">0</d:UnitsOnOrder>
</m:properties>
</content>
</entry>
Récupérer une entité-relation
Dans cet exemple de service de données, certaines valeurs sont scalaires, telles que ProductName
et UnitPrice
. D'autres valeurs, telles que Categories
et Suppliers
, représentent les extrémités des propriétés de navigation. Les propriétés de navigation sont des propriétés raccourcies qui localisent les entités liées par une association EDM.
Par exemple, l'entité Products
inclut des associations avec des entités qui représentent à la fois Suppliers
et Categories
. Vous pouvez créer un URI qui traverse ces relations.
Pour demander le fournisseur du produit dont l'ID est 2 :
Dans le navigateur Web, entrez l'URI suivant :
http://host/vdir/northwind.svc/Products(2)/Suppliers
Le code XML suivant affiche les résultats de cette demande :
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<entry xml:base="https://localhost:1365/Northwind.svc/"
xmlns:d="https://schemas.microsoft.com/ado/2007/08/dataservices"
xmlns:m="https://schemas.microsoft.com/ado/2007/08/dataservices/metadata"
m:type="NorthwindModel.Suppliers" xmlns="http://www.w3.org/2005/Atom">
<id>https://localhost:1365/Northwind.svc/Suppliers(1)</id>
<title type="text"></title>
<updated>2008-05-22T16:50:11Z</updated>
<author>
<name />
</author>
<link rel="edit" title="Suppliers" href="Suppliers(1)" />
<link rel="https://schemas.microsoft.com/ado/2007/08/dataservices/related/Products"
type="application/atom+xml;type=feed" title="Products" href="Suppliers(1)/Products" />
<content type="application/xml">
<m:properties>
<d:Address>49 Gilbert St.</d:Address>
<d:City>London</d:City>
<d:CompanyName>Exotic Liquids</d:CompanyName>
<d:ContactName>Charlotte Cooper</d:ContactName>
<d:ContactTitle>Purchasing Manager</d:ContactTitle>
<d:Country>UK</d:Country>
<d:Fax m:null="true" />
<d:HomePage m:null="true" />
<d:Phone>(171) 555-2222</d:Phone>
<d:PostalCode>EC1 4SD</d:PostalCode>
<d:Region m:null="true" />
<d:SupplierID m:type="Edm.Int32">1</d:SupplierID>
</m:properties>
</content>
</entry>
Voir aussi
Concepts
Format d'URI pour l'adressage des ressources (ADO.NET Data Services Framework)
Spécifications HTTP courantes (ADO.NET Data Services Framework)