Condividi tramite


Procedura: recuperare dati da una query tramite codice

È possibile recuperare query dal modello ed eseguirle nel codice.In questo modo è possibile utilizzare raccolte di destinazione di dati nella logica di business dell'applicazione.

Ad esempio, il modello potrebbe contenere una query denominata Products in Stock.Per determinare se è disponibile un prodotto, è possibile scrivere il codice di convalida che recupera la query Products in Stock e quindi eseguire la query.Dopo aver eseguito la query, il codice può scorrere la raccolta risultante.Se un prodotto in questa raccolta corrisponde a un prodotto nell'ordine di vendita corrente, l'utente può notificare il ritardo al cliente.

È inoltre possibile aggiungere il codice per restringere i risultati di una query tramite la clausola where.Utilizzando una clausola Where per restringere i risultati di una query, la prestazione potrebbe migliorare perché le condizioni della clausola Where sono applicate al livello del server.Per ulteriori informazioni, vedere Query: recupero di informazioni da un'origine dati.

Esempio: recuperando i dati da una query e scorrendo i risultati

Il seguente metodo di supporto viene chiamato quando un utente aggiunge una nuova riga a un ordine di vendita.Se si disponesse di un'entità denominata Order_Details, sarebbe possibile chiamare questo metodo dal Order_Details_Insertingmetodo.

Questo codice richiama i dieci clienti migliori in base agli ordini di vendita eseguendo una query chiamata TopNSalesOrders.Se l'ID del cliente che ha emesso questo ordine corrisponde all'ID di qualsiasi cliente restituito dalla query, viene applicato un sconto del 10% all'articolo.

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

Esempio: restringendo i risultati di una query tramite l'applicazione di una clausola Where

Il seguente codice può essere utilizzato come alternativa all'esempio precedente.Questo applica una clausola Where alla query TopNSalesOrders e restituisce solo un cliente, se questo sta emettendo l'ordine corrente.

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

Passaggi successivi

Per imparare come progettare visivamente una query tramite una finestra di progettazione, vedere Procedura: progettare una query utilizzando Progettazione query.

Per imparare come estendere una query nel modello tramite il codice, vedere Procedura: estendere una query tramite codice.

Vedere anche

Attività

Procedura: aggiungere, rimuovere e modificare una query

Procedura dettagliata: progettazione di una schermata

Procedura: progettare una query utilizzando Progettazione query

Procedura: estendere una query tramite codice

Altre risorse

Query: recupero di informazioni da un'origine dati