Compartir a través de


Cómo: Recuperar datos de una consulta usando código

Puede recuperar las consultas del modelo y, a continuación, ejecutarlas en el código. Esto permite trabajar con colecciones de datos concretas en la lógica de negocios de la aplicación.

Por ejemplo, el modelo puede contener una consulta denominada Products in Stock. Para determinar si un producto está disponible, puede escribir código de validación que permita recuperar la consulta Products in Stock y, a continuación, ejecutarla. Una vez ejecutada la consulta, el código puede procesar una iteración en la colección resultante. Si un producto de esta colección coincide con uno del pedido de ventas actual, el usuario puede notificar el retraso a los clientes.

También puede agregar código para restringir los resultados de una consulta mediante una cláusula where. Al utilizar una cláusula where para restringir los resultados de una consulta, se mejora el rendimiento porque las condiciones de la cláusula where se aplican en el nivel de servidor. Para obtener más información, vea Consultas: Recuperar información de un origen de datos.

Ejemplo: recuperar datos de una consulta y procesar una iteración en los resultados

Cuando un usuario agrega una nueva línea a un pedido de ventas, se llama al siguiente método auxiliar. Si tiene una entidad denominada Order_Details, puede llamar a este método desde el método Order_Details_Inserting.

Este código permite recuperar los diez primeros clientes según los pedidos de venta mediante la ejecución de una consulta llamada TopNSalesOrders. Si el identificador del cliente que realizó este pedido coincide con el de cualquier cliente devuelto por la consulta, se aplica un 10 % de descuento al elemento de línea.

Private Sub Good_Customer_Discount(ByVal entity As Order_Detail)
    For Each cust As Customer In _
        Me.DataWorkspace.NorthwindData.TopNSalesOrders(10)
        If cust.CustomerID = entity.Order.Customer.CustomerID Then
            entity.Discount = 0.1
        End If 
    Next 

End Sub
private void Good_Customer_Discount(Order_Detail entity)
{
    foreach (Customer cust in this.DataWorkspace.NorthwindData.
 TopNSalesOrders(10))
    {
        if (cust.CustomerID == entity.Order.Customer.CustomerID)
        {
            entity.Discount = 0.1F;
        }
    }
}

Ejemplo: restringir los resultados de una consulta aplicando una cláusula Where

El siguiente código se puede utilizar como una alternativa al ejemplo anterior. En este código se aplica una cláusula where a la consulta TopNSalesOrders y solo se devuelve un cliente si el cliente está realizando el pedido actual.

Private Sub Good_Customer_Discount2(ByVal entity As Order_Detail)
    Dim query As IDataServiceQueryable(Of Customer)
    query = From mycustomer In Me.DataWorkspace.NorthwindData.TopNSalesOrders(10)
            Where mycustomer.CustomerID = entity.Order.Customer.CustomerID
            Select mycustomer

    If Not IsNothing(query.SingleOrDefault) Then
        entity.Discount = 0.01
    End If 

End Sub
private void Good_Customer_Discount2(Order_Detail entity)
{
    IDataServiceQueryable<Customer> query;

    query = from myCustomer in this.DataWorkspace.NorthwindData.
                TopNSalesOrders(10)
            where myCustomer.CustomerID == entity.Order.Customer.CustomerID
            select myCustomer;

    if (query.SingleOrDefault() != null)
    {
        entity.Discount = 0.1F;
    }
}
}

Pasos siguientes

Para obtener información acerca de cómo diseñar una consulta visualmente mediante un diseñador, vea Cómo: Diseñar una consulta usando el Diseñador de consultas.

Para obtener información acerca de cómo extender una consulta en el modelo mediante código, vea Cómo: Extender una consulta usando código.

Vea también

Tareas

Cómo: Agregar, quitar y modificar una consulta

Tutorial: Diseñar una pantalla de Silverlight en LightSwitch

Cómo: Diseñar una consulta usando el Diseñador de consultas

Cómo: Extender una consulta usando código

Otros recursos

Consultas: Recuperar información de un origen de datos