Partager via


Utilisation du modèle objet Northwind (EDM)

Pour utiliser le modèle objet Northwind conçu et construit dans les rubriques annexes dans le code d'application, ajoutez une référence à la DLL et une directive using qui spécifie l'espace de noms NorthwindLib. Les types de l'espace de noms seront utilisables dans un code d'application sans la syntaxe SQL.

Fichier de configuration et chaîne de connexion

L'utilisation du modèle objet requiert une connexion à la base de données dans laquelle les données d'application sont stockées. Une connexion d'entité aux objets d'exécution fournis par la DLL construite à partir des schémas est également nécessaire.

Le fichier exe.config contient une chaîne de connexion qui est utilisée pour se connecter à une base de données SQL Server et établir une connexion d'entité. L'utilisation d'une connexion d'entité permet d'accéder aux entités et associations du modèle objet à partir du code.

Le texte de la chaîne de connexion doit être ajouté au fichier exe.config par le développeur. Cette application spécifie la classe Northwind. L'attribution providerName="System.Data.EntityClient" spécifie une connexion d'entité qui utilise le schéma de mappage défini dans la spécification de mappage Northwind.

La chaîne de connexion identifie également le serveur qui est utilisé par la connexion SQL : fournisseur connection string="server=servername".

L'exemple suivant montre le contenu du fichier exe.config.

?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <connectionStrings>
        <add name="Northwind" 
                 connectionString='Metadata=.;
                 Provider=System.Data.SqlClient;
                 Provider Connection String="server=servername;
                 database=Northwind;Integrated Security=true;
                 Connection Timeout=5;multipleactiveresultsets=true"'
                 providerName="System.Data.EntityClient"/>
    </connectionStrings>
</configuration>

Le chemin d'accès aux métadonnées qui incluent le schéma conceptuel, les métadonnées de stockage et la spécification de mappage est indiqué par l'attribution Metadata=.. Dans cet exemple, les fichiers se trouvent dans le même dossier que l'exécutable, si bien que le chemin d'accès est spécifié par le point (.), comme dans la syntaxe Metadata=.. Si les schémas et les fichiers de mappage ne sont pas dans le même dossier, vous devez spécifier le chemin d'accès complet.

NoteRemarque

Cette chaîne de connexion affecte la valeur true à plusieurs jeux de résultats actifs, comme cela est requis pour appeler la méthode Load sur des associations lorsqu'un autre lecteur de données est déjà ouvert sur la même connexion.

Code d'application

Le code ci-dessous utilise les entités et les associations définies dans le schéma conceptuel et mappées aux métadonnées de stockage dans la spécification de mappage. Pour obtenir des détails sur ce modèle de données, voir Modèle Northwind (EDM). Un EntityConnection est ouvert dans l'ObjectContext créé à partir du schéma conceptuel défini dans la rubrique Schéma conceptuel Northwind (EDM). Les entités et l'association dans l'espace de noms NorthwindLib sont utilisées pour afficher les propriétés d'entités telles que les identificateurs des commandes, rechercher des clients à partir d'associations entre des entités, afficher des produits, ainsi que rechercher et afficher les catégories de produit liées aux produits par des associations.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NorthwindLib;

namespace NorthwindClient
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                using (NorthwindLib.Northwind DB = new Northwind())
                {
                    foreach (SalesOrder salesOrder in DB.SalesOrders)
                    {
                        salesOrder.CustomerReference.Load();
                        Console.WriteLine(
                            "Customer Contact: {0} ** OrderID: {1}",
                            salesOrder.Customer.ContactName,
                            salesOrder.OrderID.ToString());
                    }

                    foreach (Product product in DB.Products)
                    {
                        product.CategoryReference.Load();
                        Console.WriteLine(" Product: " +
                            product.ProductName +
                            " ** Category: " + 
                            product.CategoryReference.Value.CategoryName);
                    }

                    DB.Connection.Close();
                }
            }

            catch (System.Data.MappingException e)
            {
                Console.WriteLine(e.ToString());
            }
            catch (System.Data.CommandExecutionException e)
            {
                Console.WriteLine(e.ToString());
            }

        }
    }
}

Voir aussi

Autres ressources

Schémas et spécification de mappage (Entity Framework)
Spécifications EDM