Condividi tramite


Procedura: eseguire una query su un'entità mappata a tabelle distinte

Quando si utilizzano dati legacy in un modello concettuale, è talvolta utile essere in grado di eseguire il mapping di una singola entità a due tabelle nel database. È possibile eseguire questa operazione quando due tabelle condividono una chiave comune, come nel caso delle tabelle Customer e Store del database di esempio AdventureWorks fornito con SQL Server 2005.

Nel codice dell'esempio incluso in questo argomento viene utilizzato il modello concettuale definito nell'argomento Procedura: definire un modello con una singola entità mappata a due tabelle. L'esecuzione di query di oggetto su un'entità mappata a due tabelle è un processo identico all'esecuzione di query su altre entità. Il mapping non influisce sulla sintassi del codice.

Per creare il progetto utilizzando un'entità mappata a tabelle distinte

  1. Creare un'applicazione console.

  2. Aggiungere un riferimento al modello concettuale definito in Procedura: definire un modello con una singola entità mappata a due tabelle.

  3. Aggiungere riferimenti a System.Data.Entity e System.Runtime.Serialization.

  4. Aggiungere la direttiva per il preprocessore per AdventureWorksModel implementato in Procedura: definire un modello con una singola entità mappata a due tabelle.

Esempio

L'entità di cui viene eseguito il mapping a tabelle distinte in questo esempio può essere utilizzata per enumerare i risultati in un ciclo foreach. Nel codice seguente vengono visualizzate le proprietà di entrambe le tabelle del mapping dell'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 );
            }
        }
    }
}

Vedere anche

Attività

Procedura: definire un modello con una singola entità mappata a due tabelle