Procédure : interroger une entité mappée à des tables distinctes

Lorsque vous utilisez des données héritées dans un modèle conceptuel, il peut être utile de mapper une même entité à deux tables de la base de données. Pour cela, les deux tables doivent partager une clé commune, comme c'est le cas des tables Customer et Store de l'exemple de base de données AdventureWorks fourni avec SQL Server 2005.

Le code de l'exemple de cette rubrique utilise le modèle conceptuel défini dans Procédure : définir un modèle avec une même entité mappée à deux tables. L'exécution de requêtes d'objet sur une entité mappée à deux tables suit un processus identique à celui de l'interrogation d'autres entités. Le mappage n'affecte pas la syntaxe du code.

Pour créer le projet à l'aide d'une entité mappée à des tables distinctes

  1. Créez une application console.

  2. Ajoutez une référence au modèle conceptuel défini dans Procédure : définir un modèle avec une même entité mappée à deux tables.

  3. Ajoutez des références à System.Data.Entity et à System.Runtime.Serialization.

  4. Ajoutez la directive de préprocesseur du modèle AdventureWorksModel implémenté dans Procédure : définir un modèle avec une même entité mappée à deux tables.

Exemple

L'entité mappée à des tables distinctes de cet exemple peut être utilisée pour énumérer des résultats dans une boucle foreach. Le code ci-dessous affiche les propriétés des deux tables du mappage de l'entité Store.

Option Explicit On
Option Strict On
Imports System
Imports System.Collections.Generic
Imports System.Linq
Imports System.Text
Imports StoreCustomer_VB.AdventureWorksModel

Module Module1
    Sub Main()
        Using objCtx As AdventureWorksEntities =
                        New AdventureWorksEntities()
            For Each store As Store In objCtx.Store
                Console.WriteLine("CustomerId: {0} Name: {1} " & vbNewLine _
                    & vbTab & "Account#: {2} SalespersonId: {3}", _
                    store.CustomerID, store.Name, store.AccountNumber, store.SalesPersonID)
                Console.Write(vbNewLine)
            Next
        End Using
    End Sub
End Module
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using AdventureWorksModel;

namespace ClientStoreCustomerSplit
{
    class Program
    {
        static void Main(string[] args)
        {
            using (AdventureWorksEntities objCtx = new AdventureWorksEntities())
            {
                foreach (Store store in objCtx.Store)
                    Console.WriteLine("CustomerId: {0} Name: {1} \r\n\t" +
                    "Account#: {2} SalespersonId: {3}",
                        store.CustomerID, store.Name, 
                        store.AccountNumber, store.SalesPersonID );
            }
        }
    }
}

Voir aussi

Tâches

Procédure : définir un modèle avec une même entité mappée à deux tables