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, nel modello potrebbe essere inclusa una query denominata Products in Stock. Per determinare se un prodotto è disponibile, è possibile scrivere il codice di convalida tramite cui si recupera la query Products in Stock, quindi eseguire la query. Dopo aver eseguito la query, tramite il codice è possibile 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, le prestazioni potrebbero migliorare perché le condizioni della clausola Where sono applicate al livello server. Per ulteriori informazioni, vedere Query: recupero di informazioni da un'origine dati.
Esempio: recupero di dati da una query e scorrimento dei risultati
Il metodo di supporto seguente 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 metodo Order_Details_Inserting.
Tramite questo codice vengono richiamati 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: riduzione dei risultati di una query tramite l'applicazione di una clausola Where
Il codice seguente può essere utilizzato come alternativa all'esempio precedente. Tramite il codice viene applicata una clausola Where alla query TopNSalesOrders e viene restituito solo un cliente se il cliente 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 informazioni su come progettare visivamente una query tramite una finestra di progettazione, vedere Procedura: progettare una query utilizzando Progettazione query.
Per informazioni su 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 di Silverlight in LightSwitch
Procedura: progettare una query utilizzando Progettazione query
Procedura: estendere una query tramite codice