Sdílet prostřednictvím


Jak: načíst Data z dotazu pomocí kódu

Můžete načíst dotazy z modelu a pak je spouštět ve vašem kódu.To umožňuje pracovat s cílenými kolekcemi dat v rámci obchodní logiky aplikace.

Model může obsahovat například dotaz s názvem Products in Stock.Pokud chcete určit, zda je produkt k dispozici, můžete napsat kód pro ověření, který načte dotaz Products in Stock a potom provede dotaz.Po spuštění dotazu může být u kódu ve výsledné kolekci použita iterace.Pokud produkt v této kolekci odpovídá produktu v aktuální prodejní objednávce, může uživatel upozornit zákazníka na zpoždění.

Můžete také přidat kód a upřesnit výsledky dotazu pomocí klauzule where.Použití klauzule where k upřesnění výsledků dotazu může zdokonalit výkon, protože podmínky klauzule where jsou použity ve vrstvě serveru.Další informace naleznete v tématu Dotazy: Načítání informací ze zdroje dat.

Příklad: Načtení dat z dotazu a iterace ve výsledcích

Následující pomocná metoda je volána, když uživatel přidá nový řádek prodejní objednávky.Pokud jste měli entitu s názvem Order_Details, můžete volat tuto metodu z metody Order_Details_Inserting.

Tento kód načte deset nejdůležitějších zákazníků na základě prodejních objednávek spuštěním dotazu s názvem TopNSalesOrders.Pokud ID zákazníka, který zadal tuto objednávku, odpovídá ID všech zákazníků vrácených dotazem, bude u položky řádku použita sleva 10 %.

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

Příklad: Zúžení výsledků dotazu použitím klauzule Where

Následující kód lze použít jako alternativu k předchozímu příkladu.Tento kód použije klauzuli where u dotazu TopNSalesOrders a zákazníka vrátí pouze tehdy, pokud zadává aktuální objednávku.

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

Další kroky

Chcete-li získat informace o návrhu dotazu vizuálně pomocí návrháře, přečtěte si informace v tématu Jak: návrhu dotazu pomocí Návrháře dotazu.

Informace o rozšíření dotazu v modelu získáte v tématu Jak: dotaz rozšířit pomocí kódu.

Viz také

Úkoly

Jak: přidat, odebrat a upravit dotaz

Názorný postup: Navrhování obrazovky

Jak: návrhu dotazu pomocí Návrháře dotazu

Jak: dotaz rozšířit pomocí kódu

Další zdroje

Dotazy: Načítání informací ze zdroje dat