Exportar (0) Imprimir
Expandir todo
Expandir Minimizar

Cómo: Usar rutas de la consulta para dar forma a los resultados (Entity Framework)

En este tema se proporciona un ejemplo de cómo especificar una ruta de la consulta que defina qué objetos relacionados se devuelven cuando se consulta un objeto concreto en un modelo conceptual. La consulta de este ejemplo devuelve un único objeto Contact y todos los objetos SalesOrderHeader y SalesOrderDetail relacionados.

Para especificar la ruta de acceso de una consulta, pase una representación de cadena del gráfico de objetos al método Include en ObjectQuery. El método Include se puede aplicar en cualquier consulta de Entity Framework : LINQ to Entities , Entity SQL o método de generador de consultas.

El ejemplo de este tema se basa en el modelo AdventureWorks Sales. Para ejecutar el código de este tema, debe haber agregado el modelo AdventureWorks Sales al proyecto y haber configurado el proyecto para que use Entity Framework. Para obtener más información, vea Cómo: Usar el Asistente para Entity Data Model (Entity Framework) o Cómo: Configurar manualmente un proyecto de Entity Framework y Cómo: Definir manualmente un modelo Entity Data Model (Entity Framework).

Ejemplo

En este siguiente ejemplo se especifica una ruta de acceso de consulta que devuelve un objeto Contact y los objetos SalesOrderHeader y SalesOrderDetail relacionados.

using (AdventureWorksEntities context =
    new AdventureWorksEntities())
{
    // Define a LINQ query with a path that returns 
    // orders and items for a contact.
    var contacts = (from contact in context.Contacts
                  .Include("SalesOrderHeaders.SalesOrderDetails")
                    select contact).FirstOrDefault();

    // Execute the query and display information for each item 
    // in the orders that belong to the contact.
    foreach (SalesOrderHeader order in contacts
        .SalesOrderHeaders)
    {
        Console.WriteLine(String.Format("PO Number: {0}",
            order.PurchaseOrderNumber));
        Console.WriteLine(String.Format("Order Date: {0}",
            order.OrderDate.ToString()));
        Console.WriteLine("Order items:");
        foreach (SalesOrderDetail item in order.SalesOrderDetails)
        {
            Console.WriteLine(String.Format("Product: {0} "
                + "Quantity: {1}", item.ProductID.ToString(),
                item.OrderQty.ToString()));
        }
    }
}

El método Include devuelve el objeto de consulta, y puede llamar varias veces a este método en una ObjectQuery para incluir entidades de varias relaciones, como en el ejemplo siguiente.

// Create a SalesOrderHeader query with two query paths, 
// one that returns order items and a second that returns the 
// billing and shipping addresses for each order.
ObjectQuery<SalesOrderHeader> query =
    context.SalesOrderHeaders.Include("SalesOrderDetails").Include("Address");

Vea también

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft