Kamil Kliczbor @ asptip.net

31Jan/110

101 przykładów zapytań w NHibernate 3.x – HQL, Criteria API, QueryOver i Linq – Dzielenie danych

Wprowadzenie

Wpis ten jest częścią artykułu poświęconemu wykonywaniu zapytań w NHibernate przy użyciu różnych sposobów jakie udostępnia ten mapper - HQL, Criteria API, QueryOver i Linq.

Część ta opisuje stosowanie dzielenie danych, tj otrzymywanie części wyników zapytania w określonych porcjach. W MS-SQLu można te zagadnienia zrealizować odpowiednio przy użyciu instrukcji

  • TOP - pobiera określoną liczbę pierwszych wyników zapytania
  • TOP wraz z ROW_NUMBER OVER (ORDER BY ...) - umożliwia pobranie "strony" wyników

Spis zapytań

30Jan/111

101 przykładów zapytań w NHibernate 3.x – HQL, Criteria API, QueryOver i Linq – Złączenia

Wprowadzenie

Wpis ten jest częścią artykułu poświęconemu wykonywaniu zapytań w NHibernate przy użyciu różnych sposobów jakie udostępnia ten mapper - HQL, Criteria API, QueryOver i Linq.

Część ta opisuje łączenie tabel przy użyciu klauzuli JOIN.

Spis zapytań

24Jan/111

101 przykładów zapytań w NHibernate 3.x – HQL, Criteria API, QueryOver i Linq – Projekcje

Wprowadzenie

Wpis ten jest częścią artykułu poświęconemu wykonywaniu zapytań w NHibernate przy użyciu różnych sposobów jakie udostępnia ten mapper - HQL, Criteria API, QueryOver i Linq.

Część ta opisuje stosowanie projekcji w zapytaniach. Jeżeli piszesz instrukcję SELECT i chcesz określić jakie kolumny lub jakie przekształcenia na kolumnach chcesz wykonać, możesz użyć składni SQL-a w następujący sposób:

SELECT NazwaKolumny, funkcja_przekształcająca(NazwaKolumny) FROM NazwaTabeli

Ponieważ dane uzyskiwane w wyniku wykonania zapytania prawie zawsze różnią się od danych mapowanych do encji, stosuje się klasy transformujące wyniki na obiekty DTO. W przypadku HQl-a, Criteria API stosuje się konstrukcję SetResultTransformer(Transformers.AliasToBean(typeof(NazwaKlasyDto))), w przypadku QueryOver - TransformUsing().

Spis zapytań

6Jan/112

101 przykładów zapytań w NHibernate 3.x – HQL, Criteria API, QueryOver i Linq – Sortowanie

Wprowadzenie

Wpis ten jest częścią artykułu poświęconemu wykonywaniu zapytań w NHibernate przy użyciu różnych sposobów jakie udostępnia ten mapper - HQL, Criteria API, QueryOver i Linq.

Część ta opisuje stosowanie sortowania danych w zapytaniach. Jeżeli piszesz instrukcję SELECT zachodzi czasem konieczność uporządkowania danych, które są zwracane w wyniku zapytania. Ogólnie rzecz biorąc stosujemy w SQL słowo ORDER BY wraz z opcjonalnym ASC|DESC oznaczającym kierunek sortowania. Koncepcję użycia przedstawiam poniżej:

SELECT Co FROM NazwaObiektu ORDER BY NazwaColumny [ASC|DESC], NazwaInnejKolumny [ASC|DESC]

Spis zapytań

31Dec/100

101 przykładów zapytań w NHibernate 3.x – HQL, Criteria API, QueryOver i Linq – Restrykcje

Wprowadzenie

Wpis ten jest częścią artykułu poświęconemu wykonywaniu zapytań w NHibernate przy użyciu różnych sposobów jakie udostępnia ten mapper - HQL, Criteria API, QueryOver i Linq.

Część ta opisuje stosowanie restrykcji w zapytaniach. Jeżeli piszesz instrukcję SELECT i chcesz określić w niej warunek, musisz użyć słowa kluczowego WHERE w podstawowej formule w następujący sposób:

SELECT NazwyKolumn FROM NazwaTabeli WHERE Warunek

Wyrażenia używane w warunku są budowane przy użyciu operatorów algebraicznych, logicznych i ciągów znakowych. W tym wpisie zostały przedstawione przykłady użycia klauzuli WHERE.

Spis zapytań

27Dec/102

101 przykładów zapytań w NHibernate 3.x – HQL, Criteria API, QueryOver i Linq.

Wprowadzenie

Postanowiłem stworzyć ten artykuł ponieważ nie mogłem odnaleźć w necie całościowego kompendium wiedzy w temacie odpytywania bazy danych przez NHibernate. Ponieważ NHibernate udostępnia wiele sposobów zadawania pytań, moim celem jest umieszczenie ich w jednym miejscu. Wśród nich wyróżnić można HQL, criteria query API wraz z rozszerzeniem Lambda Extensions, QueryOver oraz Linq for NHibernate (NHLQ). Jednym z moich założeń jest stworzenie zbioru zapytań na coś w rodzaju 101 Linq Samples. Nie wydaje mi się, żebym był w stanie odwzorować jeden do jednego to, co znajduje się na MSDNie, ale przynajmniej będę miał materiał referencyjny do którego będę mógł się odnieść.

Zapytania będę dodawać sukcesywnie oraz uaktualniać do nich odnośniki.

Wymagania

Aby móc wykonywać w miarę sensowne zapytania postanowiłem zamapować ulepszoną wersję Northwinda, którą opisałem i umieściłem w poprzednim poście. Oczywiście jeżeli chodzi o wymagane oprogramowanie jest to co najmniej Visual Studio 2008 oraz MS-SQL 2005.

Podział zapytań

  1. Restrykcje (klauzula WHERE)
    • Prosty przykład
    • Wyrażenia <, <=, ==, !=, >, >=
    • Wyrażenie Between
    • Wyrażenie In
    • Wyrażenie Like
    • Wyrażenie Like bez uwzględniania wielkości liter
    • Wyrażenie Is Null
    • Wyrażenie Not
    • Wyrażenie Exists / IsNotEmpty
    • Wyrażenie Not Exists / IsEmpty
    • Łączenie wyrażeń (koniunkcja i alternatywa - AND i OR)
    • Wyrażenia z aliasem
  2. Projekcje
    • Prosty przykład
    • Funkcje agregujące (MAX, AVG)
    • Wywołanie funkcji MS-SQL ROUND
    • Funkcja COUNT(*)
    • Funkcja COUNT(NazwaKolumny)
    • Funkcja COUNT DISTINCT
  3. Sortowanie (klauzula ORDER BY)
    • Prosty przykład
    • Sortowanie po długości wartości
    • Sortowanie po kilku kolumnach
    • Sortowanie po kilku kolumnach przez alias (różne tabele)
  4. Złączenia (klauzula JOIN)

    • Złączenie przez CreateCriteria()
    • Złączenie przez alias
    • Definiowanie typu złączenia
  5. Dzielenie danych
    • Pobranie pierwszych wyników - instrukcja TOP
    • Pobranie określonej "strony" - instrukcja TOP i ROW_NUMBER OVER
  6. Podzapytania
  7. Grupowanie

Projekt

Do pobrania już wkrótce!

Bibliografia