Comment : Récupérer les données d'une requête à l'aide du code
Vous pouvez extraire des requêtes du modèle, puis les exécuter dans votre code.Cela vous permet d'utiliser des collections ciblées de données dans la logique métier de votre application.
Par exemple, votre modèle peut contenir une requête nommée Products in Stock.Pour déterminer si un produit est disponible, vous pouvez écrire le code de validation qui extrait la requête Products in Stock, puis l'exécute.Après l'exécution de la requête, votre code peut itérer au sein de la collection résultante.Si un produit de cette collection correspond à un produit de la commande, l'utilisateur peut avertir le client du délai.
Vous pouvez également ajouter du code pour limiter les résultats d'une requête à l'aide d'une clause where.L'utilisation d'une clause Where pour affiner les résultats d'une requête peut améliorer les performances, car les conditions de la clause Where sont appliquées sur la couche serveur.Pour plus d'informations, consultez Requêtes : récupération d'informations à partir d'une source de données.
Exemple: Extraire des données d'une requête et itérer au sein des résultats
La méthode d'assistance suivante est appelée lorsqu'un utilisateur ajoute une ligne à une commande.Si vous avez une entité nommée Order_Details, vous pouvez appeler cette méthode à partir de la méthode Order_Details_Inserting.
Ce code extrait les dix premiers clients en fonction des commandes en exécutant une requête nommée TopNSalesOrders.Si l'ID du client qui a passé cette commande correspond à l'ID d'un client retourné par la requête, une remise de 10 % est appliquée à l'élément de la ligne.
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;
}
}
}
Exemple: Affiner les résultats d'une requête en appliquant une clause Where
Le code suivant peut être utilisé en guise d'alternative à l'exemple précédent.Ce code applique une clause Where à la requête TopNSalesOrders et ne retourne un client que si le client passe la commande actuelle.
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;
}
}
}
Étapes suivantes
Pour apprendre comment concevoir visuellement une requête à l'aide d'un concepteur, consultez Comment : Concevoir une requête à l'aide du concepteur de requêtes.
Pour apprendre comment étendre une requête du modèle à l'aide de code, consultez Comment : Étendre une requête à l'aide du code.
Voir aussi
Tâches
Comment : Ajouter, supprimer et modifier une requête
Procédure pas à pas : conception d'un écran
Comment : Concevoir une requête à l'aide du concepteur de requêtes
Comment : Étendre une requête à l'aide du code
Autres ressources
Requêtes : récupération d'informations à partir d'une source de données