Usar el modelo de objetos de Northwind (EDM)

Para utilizar el modelo de objetos de Northwind diseñado e integrado en los temas contiguos en el código de la aplicación, agregue una referencia a la DLL y una directiva using que especifique el espacio de nombres NorthwindLib. Los tipos del espacio de nombres se podrán usar en el código de la aplicación sin la sintaxis de SQL.

Cadena de conexión y archivo de configuración

El uso del modelo de objetos requiere una conexión con la base de datos donde se almacenan los datos de la aplicación. También se necesita una conexión de entidad a los objetos de tiempo de ejecución que proporciona la DLL generada a partir de los esquemas.

El archivo exe.config contiene una cadena de conexión que se utiliza para conectarse a una base de datos de SQL Server y establecer una conexión de entidad. Con una conexión de entidad, se puede obtener acceso a las entidades y asociaciones del modelo de objetos desde el código.

El programador debe agregar el texto de la cadena de conexión al archivo exe.config. Esta aplicación especifica la clase Northwind. La asignación providerName="System.Data.EntityClient" especifica una conexión de entidad que utiliza el esquema de asignación definido en la especificación de la asignación de Northwind.

La cadena de conexión también identifica el servidor que usa la conexión SQL: el proveedor connection string="server=servername".

En el ejemplo siguiente se muestra el contenido del archivo 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>

La asignación Metadata=. indica la ruta de acceso a los metadatos, que incluye el esquema conceptual, los metadatos de almacenamiento y la especificación de asignación. En este ejemplo, los archivos están en la misma carpeta que el ejecutable, por lo tanto, la ruta de acceso se especifica mediante un punto (.) como en la sintaxis Metadata=.. Si los archivos de asignación y esquemas no están en la misma carpeta, debe especificar la ruta de acceso completa.

Nota

Esta cadena de conexión establece los conjuntos de resultados activos múltiples (MARS) en True según se requiere para invocar el método Load en las asociaciones cuando otro lector de datos ya está abierto en la misma conexión.

Código de la aplicación

El código siguiente utiliza las entidades y asociaciones definidas en el esquema conceptual y asignadas a los metadatos de almacenamiento en la especificación de la asignación. Para obtener información detallada sobre este modelo de datos, vea Modelo de Northwind (EDM). EntityConnection se abre al ObjectContext creado, generado a partir del esquema conceptual definido en el tema Esquema conceptual de Northwind (EDM). Las entidades y la asociación del espacio de nombres NorthwindLib se utilizan para mostrar propiedades de las entidades, por ejemplo los identificadores de los pedidos de ventas; buscar los clientes de asociaciones entre entidades; mostrar los productos; y buscar y mostrar las categorías de productos relacionados con los productos por asociaciones.

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

        }
    }
}

Vea también

Otros recursos

Especificación de asignaciones y esquemas (Entity Framework)
Especificaciones del EDM