Utilizzo del modello a oggetti di Northwind (EDM)

Per utilizzare il modello a oggetti di Northwind progettato e compilato negli argomenti precedenti e successivi nel codice dell'applicazione, aggiungere un riferimento alla DLL e una direttiva using che specifica lo spazio dei nomi NorthwindLib. I tipi dello spazio dei nomi potranno essere utilizzati nel codice dell'applicazione senza la sintassi SQL.

File di configurazione e stringa di connessione

Per l'utilizzo del modello a oggetti, è necessaria una connessione al database in cui sono archiviati i dati dell'applicazione. È inoltre necessaria una connessione dell'entità agli oggetti di runtime forniti dalla DLL compilata dagli schemi.

Il file exe.config contiene una stringa di connessione utilizzata per connettersi a un database di SQL Server e per stabilire una connessione dell'entità. Utilizzando una connessione dell'entità, è possibile accedere alle entità e alle associazioni nel modello a oggetti dal codice.

Il testo della stringa di connessione deve essere aggiunto al file exe.config dallo sviluppatore. Questa applicazione specifica la classe Northwind. L'assegnazione providerName="System.Data.EntityClient" specifica una connessione dell'entità che utilizza lo schema di mapping definito nella specifica di mapping di Northwind.

La stringa di connessione identifica anche il server utilizzato dalla connessione SQL: provider connection string="server=servername".

Nell'esempio seguente viene illustrato il contenuto del file 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>

Il percorso ai metadati, che includono lo schema concettuale, i metadati di archiviazione e la specifica di mapping, è indicato dall'assegnazione Metadata=.. In questo esempio i file si trovano nella stessa cartella dell'eseguibile, pertanto il percorso è specificato dal punto (.), come nella sintassi Metadata=.. Se gli schemi e i file di mapping non si trovano nella stessa cartella, è necessario specificare il percorso completo.

NoteNota

Questa stringa di connessione imposta i servizi MARS (Multiple Active Result Set) su true, come richiesto per richiamare il metodo Load sulle associazioni quando un altro lettore dati è già aperto nella stessa connessione.

Codice dell'applicazione

Nel codice seguente vengono utilizzate le entità e le associazioni definite nello schema concettuale e mappate ai metadati di archiviazione nella specifica di mapping. Per informazioni dettagliate su questo modello di dati, vedere Modello Northwind (EDM). Viene aperta una connessione EntityConnection all'oggetto ObjectContext generato dallo schema concettuale definito nell'argomento Schema concettuale di Northwind (EDM). Le entità e l'associazione nello spazio dei nomi NorthwindLib sono utilizzate per visualizzare le proprietà delle entità, ad esempio gli identificatori degli ordini di vendita, per individuare i clienti dalle associazioni tra entità, per visualizzare i prodotti e per individuare e visualizzare le categorie di prodotti correlate ai prodotti tramite associazioni.

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());
            }

        }
    }
}

Vedere anche

Altre risorse

Specifica di schemi e mapping (Entity Framework)
Specifiche EDM