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