Procédure pas à pas : Création d’un service de données WCF avec WPF et Entity FrameworkWalkthrough: Creating a WCF Data Service with WPF and Entity Framework

Cette procédure pas à pas montre comment créer un Service de données WCFWCF Data Service simple qui est hébergé dans une application web ASP.NETASP.NET, puis comment y accéder à partir d’une application Windows Forms.This walkthrough demonstrates how to create a simple Service de données WCFWCF Data Service that is hosted in an ASP.NETASP.NET web application and then access it from a Windows Forms application.

Dans cette procédure pas à pas vous :In this walkthrough you:

  • Créez une application web pour héberger un Service de données WCFWCF Data Service.Create a web application to host a Service de données WCFWCF Data Service.

  • Créer un Entity Data ModelEntity Data Model qui représente le Customers table dans la base de données Northwind.Create an Entity Data ModelEntity Data Model that represents the Customers table in the Northwind database.

  • Créer un Service de données WCFWCF Data Service.Create a Service de données WCFWCF Data Service.

  • Créer une application cliente et ajouter une référence au Service de données WCFWCF Data Service.Create a client application and add a reference to the Service de données WCFWCF Data Service.

  • Activer la liaison de données vers un service et générer l'interface utilisateur.Enable data binding to the service and generate the user interface.

  • Ajouter éventuellement des fonctions de filtrage à l'application.Optionally add filtering capabilities to the application.

PrérequisPrerequisites

Cette procédure pas à pas utilise SQL Server Express LocalDB et la base de données Northwind.This walkthrough uses SQL Server Express LocalDB and the Northwind sample database.

  1. Si vous n’avez pas SQL Server Express LocalDB, installez-le à partir de la page de téléchargement de SQL Server Express, ou via le le programme d’installation de Visual Studio.If you don't have SQL Server Express LocalDB, install it either from the SQL Server Express download page, or through the Visual Studio Installer. Dans le le programme d’installation de Visual Studio, vous pouvez installer SQL Server Express LocalDB dans le cadre de la stockage de données et de traitement charge de travail, ou comme un composant individuel.In the Visual Studio Installer, you can install SQL Server Express LocalDB as part of the Data storage and processing workload, or as an individual component.

  2. Installer la base de données Northwind en suivant ces étapes :Install the Northwind sample database by following these steps:

    1. Dans Visual Studio, ouvrez le Explorateur d’objets SQL Server fenêtre.In Visual Studio, open the SQL Server Object Explorer window. (Explorateur d’objets SQL Server est installé dans le cadre de la stockage de données et de traitement charge de travail dans Visual Studio Installer.) Développez le SQL Server nœud.(SQL Server Object Explorer is installed as part of the Data storage and processing workload in the Visual Studio Installer.) Expand the SQL Server node. Avec le bouton droit sur votre instance de base de données locale et sélectionnez nouvelle requête.Right-click on your LocalDB instance and select New Query.

      Une fenêtre d’éditeur de requête s’ouvre.A query editor window opens.

    2. Copie le script Transact-SQL de Northwind dans votre Presse-papiers.Copy the Northwind Transact-SQL script to your clipboard. Ce script T-SQL crée la base de données Northwind à partir de zéro et la remplit avec des données.This T-SQL script creates the Northwind database from scratch and populates it with data.

    3. Collez le script T-SQL dans l’éditeur de requête, puis choisissez le Execute bouton.Paste the T-SQL script into the query editor, and then choose the Execute button.

      Après une courte période, la requête est terminée en cours d’exécution et la base de données Northwind est créé.After a short time, the query finishes running and the Northwind database is created.

Création du serviceCreating the Service

Pour créer un Service de données WCFWCF Data Service, vous devez ajouter un projet web, créer un Entity Data ModelEntity Data Model, puis créer le service à partir du modèle.To create a Service de données WCFWCF Data Service, you will add a web project, create an Entity Data ModelEntity Data Model, and then create the service from the model.

Dans la première étape, vous ajoutez un projet web pour héberger le service.In the first step, you add a web project to host the service.

Note

Dans cet article, il est possible que votre ordinateur affiche des noms ou des emplacements différents pour certains éléments de l’interface utilisateur Visual Studio.Your computer might show different names or locations for some of the Visual Studio user interface elements in this article. Vous utilisez peut-être une autre édition de Visual Studio ou d’autres paramètres d’environnement.You may be using a different edition of Visual Studio or different environment settings. Pour plus d’informations, consultez Personnaliser l’IDE.For more information, see Personalize the IDE.

Pour créer le projet webTo create the web project

  1. Dans la barre de menus, choisissez Fichier > Nouveau > Projet.On the menu bar, choose File > New > Project.

  2. Dans la boîte de dialogue Nouveau projet, développez les nœuds Visual Basic ou Visual C# et Web, puis choisissez le modèle Application web ASP.NET.In the New Project dialog box, expand the Visual Basic or Visual C# and Web nodes, and then choose the ASP.NET Web Application template.

  3. Dans la zone de texte Nom, entrez NorthwindWeb, puis choisissez le bouton OK.In the Name text box, enter NorthwindWeb, and then choose the OK button.

  4. Dans la boîte de dialogue Nouveau projet ASP.NET, dans la liste Sélectionner un modèle, choisissez Vide, puis le bouton OK.In the New ASP.NET Project dialog box, in the Select a template list, choose Empty, and then choose the OK button.

Dans l’étape suivante, vous allez créer un Entity Data ModelEntity Data Model qui représente le Customers table dans la base de données Northwind.In the next step, you create an Entity Data ModelEntity Data Model that represents the Customers table in the Northwind database.

Pour créer le modèle EDM (Entity Data Model)To create the Entity Data Model

  1. Dans la barre de menus, choisissez Projet > Ajouter un nouvel élément.On the menu bar, choose Project > Add New Item.

  2. Dans la boîte de dialogue Ajouter un nouvel élément, choisissez le nœud Données, puis l’élément ADO.NET Entity Data Model.In the Add New Item dialog box, choose the Data node, and then choose the ADO.NET Entity Data Model item.

  3. Dans le nom texte, entrez NorthwindModel, puis choisissez le ajouter bouton.In the Name text box, enter NorthwindModel, and then choose the Add button.

    L'Assistant Entity Data Model s'affiche.The Entity Data Model Wizard appears.

  4. Dans l’Assistant EDM, dans la page Choisir le contenu du modèle, choisissez l’élément Concepteur EF à partir d’une base de données, puis cliquez sur le bouton Suivant.In the Entity Data Model Wizard, on the Choose Model Contents page, choose the EF Designer from database item, and then choose the Next button.

  5. Sur la page Choisir votre connexion de données , effectuez l'une des opérations suivantes :On the Choose Your Data Connection page, perform one of the following steps:

    • Si une connexion de données à l’exemple de base de données Northwind est disponible dans la liste déroulante, choisissez-la.If a data connection to the Northwind sample database is available in the drop-down list, choose it.

      - ou --or-

    • Choisissez le bouton Nouvelle connexion pour configurer une nouvelle connexion de données.Choose the New Connection button to configure a new data connection. Pour plus d’informations, consultez ajouter de nouvelles connexions.For more information, see Add new connections.

  6. Si la base de données nécessite un mot de passe, choisissez la case d’option Oui, inclure les données sensibles dans la chaîne de connexion, puis cliquez sur le bouton Suivant.If the database requires a password, choose the Yes, include sensitive data in the connection string option button, and then choose the Next button.

    Note

    Si une boîte de dialogue s’affiche, choisissez Oui pour enregistrer le fichier dans votre projet.If a dialog box appears, choose Yes to save the file to your project.

  7. Dans la page Choisir votre version, choisissez la case d’option Entity Framework 5.0, puis le bouton Suivant.On the Choose your version page, choose the Entity Framework 5.0 option button, and then choose the Next button.

    Note

    Pour pouvoir utiliser la dernière version d’Entity Framework 6 avec les services WCF, vous devez installer le package NuGet du fournisseur Entity Framework de services de données WCF.In order to use the latest version of the Entity Framework 6 with WCF Services, you'll need to install the WCF Data Services Entity Framework Provider NuGet package. Consultez à l’aide de WCF Data Services 5.6.0 avec Entity Framework 6 +.See Using WCF Data Services 5.6.0 with Entity Framework 6+.

  8. Dans la page Choisir vos objets de base de données, développez le nœud Tables, cochez la case Customers, puis choisissez le bouton Terminer.On the Choose Your Database Objects page, expand the Tables node, select the Customers check box, and then choose the Finish button.

    Le diagramme de modèle d’entité s’affiche et un NorthwindModel.edmx fichier est ajouté à votre projet.The entity model diagram displays, and a NorthwindModel.edmx file is added to your project.

Dans l’étape suivante, vous allez créer et tester le service de données.In the next step, you create and test the data service.

Pour créer le service de donnéesTo create the data service

  1. Dans la barre de menus, choisissez Projet > Ajouter un nouvel élément.On the menu bar, choose Project > Add New Item.

  2. Dans la boîte de dialogue Ajouter un nouvel élément, choisissez le nœud Web, puis l’élément WCF Data Service 5.6.In the Add New Item dialog box, choose the Web node, and then choose the WCF Data Service 5.6 item.

  3. Dans le nom texte, entrez NorthwindCustomers, puis choisissez le ajouter bouton.In the Name text box, enter NorthwindCustomers, and then choose the Add button.

    Le fichier NorthwindCustomers.svc s’affiche dans l’Éditeur de code.The NorthwindCustomers.svc file appears in the Code Editor.

  4. Dans l’Éditeur de code, localisez le premier commentaire TODO: et remplacez le code par celui-ci :In the Code Editor, locate the first TODO: comment and replace the code with the following:

    Inherits DataService(Of northwindEntities)
    
    public class NorthwindCustomers : DataService<northwindEntities>
    
  5. Remplacez les commentaires dans le gestionnaire d'événements InitializeService par le code suivant :Replace the comments in the InitializeService event handler with the following code:

    config.SetEntitySetAccessRule("*", EntitySetRights.All)
    
    config.SetEntitySetAccessRule("*", EntitySetRights.All);
    
  6. Dans la barre de menus, choisissez déboguer > démarrer sans débogage pour exécuter le service.On the menu bar, choose Debug > Start Without Debugging to run the service. Une fenêtre de navigateur s’ouvre et affiche le schéma XML pour le service.A browser window opens and the XML schema for the service displays.

  7. Dans le adresse barre, entrez Customers à la fin de l’URL pour NorthwindCustomers.svc, puis choisissez le entrée clé.In the Address bar, enter Customers at the end of the URL for NorthwindCustomers.svc, and then choose the Enter key.

    Une représentation XML des données dans le Customers table apparaît.An XML representation of the data in the Customers table appears.

    Note

    Dans certains cas, Internet Explorer interprétera par erreur les données comme un flux RSS.In some cases, Internet Explorer will misinterpret the data as an RSS feed. Vous devez vous assurer que l'option permettant d'afficher les flux RSS est désactivée.You must make sure that the option to display RSS feeds is disabled. Pour plus d’informations, consultez Dépannage des références de service.For more information, see Troubleshooting service references.

  8. Fermez la fenêtre du navigateur.Close the browser window.

Dans les étapes suivantes, vous créez une application cliente de Windows Forms pour consommer le service.In the next steps, you create a Windows Forms client application to consume the service.

Création de l'application clienteCreating the Client Application

Pour créer l’application cliente, vous ajoutez un deuxième projet, une référence de service au projet, vous configurez une source de données et vous créez une interface utilisateur pour afficher les données provenant du service.To create the client application, you add a second project, add a service reference to the project, configure a data source, and create a user interface to display the data from the service.

Dans la première étape, vous allez ajouter un projet Windows Forms à la solution et définissez-le comme projet de démarrage.In the first step, you add a Windows Forms project to the solution and set it as the startup project.

Pour créer l'application clienteTo create the client application

  1. Dans la barre de menus, choisissez Fichier, ajouter > nouveau projet.On the menu bar, choose File, Add > New Project.

  2. Dans le nouveau projet boîte de dialogue, développez le Visual Basic ou Visual C# nœud, choisissez le Windows nœud, puis choisissez Windows Forms Application.In the New Project dialog box, expand the Visual Basic or Visual C# node, choose the Windows node, and then choose Windows Forms Application.

  3. Dans la zone de texte Nom, entrez NorthwindClient, puis choisissez le bouton OK.In the Name text box, enter NorthwindClient, and then choose the OK button.

  4. Dans l’Explorateur de solutions, choisissez le nœud du projet NorthwindClient.In Solution Explorer, choose the NorthwindClient project node.

  5. Dans la barre de menus, choisissez Projet, Définir comme projet de démarrage.On the menu bar, choose Project, Set as StartUp Project.

Dans l’étape suivante, vous ajoutez une référence de service à le Service de données WCFWCF Data Service dans le projet web.In the next step, you add a service reference to the Service de données WCFWCF Data Service in the web project.

Pour ajouter une référence de service.To add a service reference

  1. Dans la barre de menus, choisissez projet > ajouter une référence de Service.On the menu bar, choose Project > Add Service Reference.

  2. Dans la boîte de dialogue Ajouter une référence de service, choisissez le bouton Découvrir.In the Add Service Reference dialog box, choose the Discover button.

    L’URL pour le service NorthwindCustomers s’affiche dans le champ Address.The URL for the NorthwindCustomers service appears in the Address field.

  3. Choisissez le bouton OK pour ajouter la référence de service.Choose the OK button to add the service reference.

Dans l’étape suivante, vous configurez une source de données pour permettre la liaison de données au service.In the next step, you configure a data source to enable data binding to the service.

Pour activer la liaison de données vers le serviceTo enable data binding to the service

  1. Dans la barre de menus, choisissez vue > Windows autres > des Sources de données.On the menu bar, choose View > Other Windows > Data Sources.

    La fenêtre Sources de données s’ouvre.The Data Sources window opens.

  2. Dans la fenêtre Sources de données, choisissez le bouton Ajouter une nouvelle source de données.In the Data Sources window, choose the Add New Data Source button.

  3. Dans la page Choisir un type de source de données de l’Assistant Configuration de source de données, choisissez Objet, puis cliquez sur le bouton Suivant.On the Choose a Data Source Type page of the Data Source Configuration Wizard, choose Object, and then choose the Next button.

  4. Dans la page Sélectionner les objets de données, développez le nœud NorthwindClient, puis le nœud NorthwindClient.ServiceReference1.On the Select the Data Objects page, expand the NorthwindClient node, and then expand the NorthwindClient.ServiceReference1 node.

  5. Cochez la case Customer, puis choisissez le bouton Terminer.Select Customer check box, and then choose the Finish button.

Dans l’étape suivante, vous créez l’interface utilisateur qui affiche les données à partir du service.In the next step, you create the user interface that displays the data from the service.

Pour créer l'interface utilisateurTo create the user interface

  1. Dans la fenêtre Sources de données, ouvrez le menu contextuel pour le nœud Customers et choisissez Copier.In the Data Sources window, open the shortcut menu for the Customers node and choose Copy.

  2. Dans le concepteur de formulaires Form1.vb ou Form1.cs, ouvrez le menu contextuel et choisissez Coller.In the Form1.vb or Form1.cs form designer, open the shortcut menu and choose Paste.

    Un contrôle DataGridView, un composant BindingSource et un composant BindingNavigator sont ajoutés au formulaire.A DataGridView control, a BindingSource component, and a BindingNavigator component are added to the form.

  3. Sélectionnez le contrôle CustomersDataGridView et, dans la fenêtre Propriétés, définissez la propriété Dock sur Remplissage.Choose the CustomersDataGridView control, and then in the Properties window set the Dock property to Fill.

  4. Dans l’Explorateur de solutions, ouvrez le menu contextuel pour le Form1 nœud et choisissez afficher le Code pour ouvrir l’éditeur de Code, ajoutez le code suivant Imports ou Usinginstruction en haut du fichier :In Solution Explorer, open the shortcut menu for the Form1 node and choose View Code to open the Code Editor, and add the following Imports or Using statement at the top of the file:

    Imports NorthwindClient.ServiceReference1
    
    using NorthwindClient.ServiceReference1;
    
  5. Ajoutez le code suivant au gestionnaire d'événements Form1_Load :Add the following code to the Form1_Load event handler:

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            Dim proxy As New NorthwindEntities _
    (New Uri("http://localhost:53161/NorthwindCustomers.svc/"))
            Me.CustomersBindingSource.DataSource = proxy.Customers
        End Sub
    
    private void Form1_Load(object sender, EventArgs e)
    {
    NorthwindEntities proxy = new NorthwindEntities(new Uri("http://localhost:53161/NorthwindCustomers.svc/"));
    this.CustomersBindingSource.DataSource = proxy.Customers;
    }
    
  6. Dans l’Explorateur de solutions, ouvrez le menu contextuel du fichier NorthwindCustomers.svc et choisissez Afficher dans le navigateur.In Solution Explorer, open the shortcut menu for the NorthwindCustomers.svc file and choose View in Browser. Internet Explorer s’ouvre et affiche le schéma XML pour le service.Internet Explorer opens and the XML schema for the service displays.

  7. Copiez l'URL à partir de la barre d'adresses d'Internet Explorer.Copy the URL from the Internet Explorer address bar.

  8. Dans le code que vous avez ajouté à l'étape 4, sélectionnez http://localhost:53161/NorthwindCustomers.svc/ et remplacez-le par l'URL que vous venez de copier.In the code that you added in step 4, select http://localhost:53161/NorthwindCustomers.svc/ and replace it with the URL that you just copied.

  9. Dans la barre de menus, choisissez déboguer > démarrer le débogage pour exécuter l’application.On the menu bar, choose Debug > Start Debugging to run the application. Les informations client sont affichées.The customer information is shown.

    Vous disposez désormais d'une application opérationnelle qui affiche une liste de clients à partir du service NorthwindCustomers.You now have a working application that displays a list of customers from the NorthwindCustomers service. Si vous souhaitez exposer des données supplémentaires à travers le service, vous pouvez modifier l'Entity Data ModelEntity Data Model pour inclure des tables supplémentaires à partir de la base de données Northwind.If you want to expose additional data through the service, you can modify the Entity Data ModelEntity Data Model to include additional tables from the Northwind database.

Dans l’étape facultative suivante, vous allez apprendre à filtrer les données retournées par le service.In the next optional step, you learn how to filter the data that is returned by the service.

Ajout des fonctions de filtrageAdding Filtering Capabilities

Dans cette étape, vous personnalisez l’application à filtrer les données selon la ville du client.In this step, you customize the application to filter the data by the customer's city.

Pour ajouter le filtrage selon la villeTo add filtering by city

  1. Dans l’Explorateur de solutions, ouvrez le menu contextuel du nœud Form1.vb ou Form1.cs, puis choisissez Ouvrir.In Solution Explorer, open the shortcut menu for the Form1.vb or Form1.cs node and choose Open.

  2. Ajoutez un contrôle TextBox et un contrôle Button au formulaire à partir de la Boîte à outils.Add a TextBox control and a Button control from the Toolbox to the form.

  3. Ouvrez le menu contextuel pour le Button contrôler, choisissez afficher le Code, puis ajoutez le code suivant dans le Button1_Click Gestionnaire d’événements :Open the shortcut menu for the Button control, choose View Code, and then add the following code in the Button1_Click event handler:

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Dim proxy As New northwindEntities _
    (New Uri("http://localhost:53161/NorthwindCustomers.svc"))
            Dim city As String = TextBox1.Text
    
            If city <> "" Then
                Me.CustomersBindingSource.DataSource = From c In _
             proxy.Customers Where c.City = city
            End If
    
        End Sub
    
    private void Button1_Click(object sender, EventArgs e)
    {
    ServiceReference1.northwindModel.northwindEntities proxy = new northwindEntities(new Uri("http://localhost:53161/NorthwindCustomers.svc"));
    string city = TextBox1.Text;
    
    if (!string.IsNullOrEmpty(city)) {
    this.CustomersBindingSource.DataSource = from c in proxy.Customers where c.City == city;
    }
    
    }
    
  4. Dans le code précédent, remplacez http://localhost:53161/NorthwindCustomers.svc par l'URL du gestionnaire d'événements Form1_Load.In the previous code, replace http://localhost:53161/NorthwindCustomers.svc with the URL from the Form1_Load event handler.

  5. Dans la barre de menus, choisissez déboguer > démarrer le débogage pour exécuter l’application.On the menu bar, choose Debug > Start Debugging to run the application.

  6. Dans la zone de texte, tapez London, puis choisissez le bouton.In the text box, enter London, and then choose the button. Seuls les clients de Londres sont affichés.Only the customers from London are displayed.

Voir aussiSee also