Partager via


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