Udostępnij za pośrednictwem


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

Inne zasoby

Zapytania: pobieranie informacji ze źródła danych