Porady: pobieranie danych z zapytania przy użyciu kodu
Można pobrać zapytania z modelu i wykonać je w kodzie.Umożliwia to pracę z ukierunkowanymi zbiorami danych logiki biznesowej w aplikacji.
Na przykład, model może zawierać zapytanie o nazwie Products in Stock.Aby określić, czy produkt jest dostępny, można napisać kod sprawdzania poprawności, który pobiera zapytanie Products in Stock, a następnie wykonuje zapytanie.Po wykonaniu zapytania, kod może przejść przez wynikową kolekcję.Jeśli produkt w tej kolekcji odpowiada produktowi z bieżącego zamówienia sprzedaży, użytkownik może powiadomić klienta o opóźnieniu.
Można również dodać kod, aby zawęzić wyniki zapytania za pomocą klauzuli where.Stosując klauzulę where, aby zawęzić wyniki zapytania, można poprawić wydajność, ponieważ warunki klauzuli where są stosowane w warstwie serwera.Aby uzyskać więcej informacji, zobacz Zapytania: pobieranie informacji ze źródła danych.
Przykład: Pobieranie danych z zapytania i przechodzenie przez wyniki
Następująca metoda pomocnika jest wywoływana, gdy użytkownik dodaje nowy wiersz zamówienia sprzedaży.Jeżeli masz obiekt o nazwie Order_Details, możesz wywołać tę metodę z metody Order_Details_Inserting.
Ten kod pobiera dziesięciu pierwszych klientów na podstawie zamówień sprzedaży poprzez wykonywanie zapytania o nazwie TopNSalesOrders. Jeśli identyfikator odbiorcy, który złożył zamówienie, odpowiada identyfikatorowi klientów zwracanemu przez zapytanie, 10% zniżki jest stosowane do elementu wiersza.
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;
}
}
}
Przykład: Zawężanie wyników zapytania za pomocą klauzuli Where
Poniższy kod może służyć jako alternatywa dla poprzedniego przykładu.Niniejszy kod stosuje klauzulę where do zapytania TopNSalesOrders i zwraca klienta, tylko jeśli klient składa bieżące zamówienie.
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;
}
}
}
Następne kroki
Aby dowiedzieć się, jak zaprojektować zapytanie przy użyciu projektanta zapytań, zobacz Porady: projektowanie zapytania przy użyciu narzędzia Projektant zapytań.
Aby dowiedzieć się, jak rozszerzyć zapytanie w modelu przy użyciu kodu, zobacz Porady: rozszerzanie zapytania przy użyciu kodu.
Zobacz też
Zadania
Porady: dodawanie, usuwanie i modyfikowanie zapytania
Wskazówki: tworzenie ekranu technologii Silverlight w aplikacji LightSwitch
Porady: projektowanie zapytania przy użyciu narzędzia Projektant zapytań
Porady: rozszerzanie zapytania przy użyciu kodu