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ń
Dynamiczne usuwanie default constraint z tabeli
Dynamiczne usuwanie domyślnych wartości tabeli można zrealizować za pomocą poniższego kodu.
DECLARE @@cName NVARCHAR(100)
DECLARE @query NVARCHAR(100)
DECLARE @@counter INT
DECLARE DF_evoyage CURSOR SCROLL
FOR
SELECT NAME --, OBJECT_ID, PARENT_OBJECT_ID, TYPE, TYPE_DESC, PARENT_COLUMN_ID, DEFINITION
FROM SYS.DEFAULT_CONSTRAINTS
WHERE NAME LIKE '%_table_name_%'
OPEN DF_evoyage
FETCH FIRST FROM DF_table INTO @@cName
SET @@counter = 1
WHILE @@FETCH_STATUS = 0
BEGIN
SET @query = 'ALTER TABLE table_name DROP CONSTRAINT ' + @@cName;
PRINT CAST(CAST(@@counter AS NVARCHAR(10)) + ') EXECUTING ' + @query AS NVARCHAR(200))
EXEC sp_executesql @query
FETCH NEXT FROM DF_table INTO @@cName
SET @@counter = @@counter + 1
END
CLOSE DF_table
DEALLOCATE DF_table
Operacja przydaje się w przypadku kiedy np. trzeba dodać identity na kolumnie. Jedyna opcją jest wtedy (dajmy na to że operujemy na tabeli 'tab')
1. Usunięcie constraintów z tabeli tab
2. Utworzenie tabeli TMP_tab
3. Dodanie tych samych defaultów na tabeli TMP_tab
4. Skopiowanie danych z tabeli tab do tabeli TMP_tab
5. Usunięcie tabeli tab
6. Zmiana nazwy tabeli z TMP_tab na tab
7. Dodanie pozostałych constraintów do tabeli tab.
FINITO.