Microsoft.NET: LINQ to SQL, ASP.NET AJAX Do realizacji projektu potrzebne jest zintegrowane środowisko programistyczne Microsoft Visual Studio 2008 oraz serwer bazy danych SQL Server Express 2005 (lub SQL Server Express 2008 pod warunkiem instalacji Service Pack 1 dla Visual Studio 2008). Przed przystąpieniem do realizacji ćwiczeń należy sprawdzić w opisany poniżej sposób dostępność lokalnej instalacji SQL Server Express i jej integrację z Visual Studio. 1. Sprawdzenie czy zainstalowany i uruchomiony jest lokalny serwer bazy danych SQL Server Express (i uruchomienie go jeśli jest zainstalowany, a nie uruchomiony) a. Usługi b. SQL Server Configuration Manager (dostępny z menu Start)
2. Sprawdzenie konfiguracji Visual Studio w zakresie współpracy z SQL Server Express (Tools Options). Ćwiczenie 1 Celem ćwiczenia jest przygotowanie prostej aplikacji ASP.NET komunikującej się z bazą danych poprzez LINQ to SQL. W tym ćwiczeniu powiązanie komponentu GridView z obiektami LINQ to SQL zostanie zrealizowane ręcznie tj. bez pomocy kontrolki LinqDataSource. Kroki ćwiczenia: 1. Utworzenie nowej witryny (Web Site). a) Uruchom narzędzie Microsoft Visual Studio. b) Z menu głównego wybierz File New Web Site. Wybierz szablon ASP.NET Web Site, język Visual C# i lokalizację File System. Zaakceptuj zaproponowany katalog lub zmień go na inny gdy nie masz prawa zapisu w proponowanym katalogu. Kliknij przycisk OK.
2. Dodanie pliku danych SQL Server Express do projektu a) W panelu Solution Explorer wywołaj prawym klawiszem myszy menu kontekstowe dla folderu App_Data i wybierz opcję Add Existing Item. Wskaż pobrany na dysk lokalny plik Instytut.mdf. b) Po dodaniu pliku do projektu wywołaj dla niego w panelu Solution Explorer prawym klawiszem myszy menu kontekstowe i wybierz opcję Open. Rozwiń gałąź Tables i upewnij się, że plik bazy danych zawiera tabele PRACOWNICY, ZESPOLY, ETATY. 3. Utworzenie klas LINQ to SQL. a) Z menu kontekstowego dla węzła projektu w panelu Solution Explorer wybierz opcję Add New Item. Wybierz szablon LINQ to SQL Classes, język Visual C# i pozostaw zaproponowaną nazwę pliku. Kliknij przycisk Add. Zaakceptuj propozycję umieszczenia tworzonego pliku w folderze App_Code projektu. b) Utworzony plik zostanie otwarty do graficznej edycji w narzędziu Object Relational Designer (zintegrowanym z Visual Studio). Przeciągnij z panelu Server Explorer do
okna Designera kolejno tabele PRACOWNICY, ZESPOLY, ETATY. Obejrzyj efekt w edytorze graficznym. Zapisz wszystkie zmiany. c) Obejrzyj kod źródłowy klasy kontekstu danych LINQ to SQL (DataClasses.designer.cs). Zwróć uwagę na: a. Konstruktory obiektu kontekstu b. Zagnieżdżone klasy odwzorowujące tabele z bazy danych c. Sposób odwzorowania związków klucza obcego na poziomie klas LINQ to SQL d. Metody kontekstu do odczytu obiektów z poszczególnych tabel. 4. Utworzenie formularza do wyświetlania informacji o pracownikach. d) Zmień nazwę utworzonej wraz z projektem strony Default.aspx na EmpsFromDept.aspx wybierając opcję Rename z menu kontekstowego w panelu Solution Explorer (automatycznie powinna zmienić się również nazwa pliku code behind). e) Przejdź do edycji strony w trybie Design. f) Umieść na stronie kontrolkę GridView. g) Poprzez paletę właściwości ustaw komunikat, który będzie się pojawiał gdy kontrolka nie znajdzie danych do wyświetlenia. 5. Powiązanie kontrolki GridView z danymi odczytywanymi przez LINQ to SQL: a) Przejdź do edycji pliku code behind strony b) Dodaj metodę zwracającą pracowników z zespołu o podanym identyfikatorze (uzupełnij zapytanie LINQ w poniższym kodzie) private void BindEmployeesFromDept(int deptid) { DataClassesDataContext dc = new DataClassesDataContext(); var emps = (from... where...
} select...); GridView1.DataSource = emps; GridView1.DataBind(); c) W ciele metody Page_Load umieść poniższy wywołujący dodaną przed chwilą metodę przekazując jej identyfikator zespołu zawarty w adresie żądania: if (Request.QueryString["zesp"]!= null) BindEmployeesFromDept(Convert.ToInt32(Request.QueryString["zesp"])); else BindEmployeesFromDept(-1); d) Uruchom stronę, a następnie popraw w przeglądarce adres dodając do niego parametr wywołania. Ćwiczenie 2 Celem ćwiczenia jest wykorzystanie kontrolki LinqDataSource jako pośrednika między warstwą prezentacji a klasami LINQ to SQL. Kroki ćwiczenia: 1. Utwórz w projekcie nową stronę ASP.NET Web Form. Nazwij stronę EmployeesByJob.aspx. 2. Umieść na stronie kontrolkę LinqDataSource. Poprzez jej znacznik inteligentny wybierz opcję Configure Data Source. Wybierz z listy obiekt kontekstu i kliknij Next. 3. W kolejnym kroku konfiguracji źródła danych wybierz z listy tabelę PRACOWNICY. Nie wybieraj żadnego atrybutu grupującego. Pozostaw wybór odczytu wszystkich kolumn (*).
4. Kliknij przycisk Advanced i zaznacz opcje umożliwiającą kontrolce LinqDataSource automatyczną realizację modyfikacji. Zakończ działanie kreatora. Upewnij się poprzez inteligentny znacznik kontrolki, że będzie ona umożliwiać modyfikacje danych. 5. Umieść na stronie kontrolkę GridView i powiąż ją z kontrolką LinqDataSource. Uaktywnij możliwość modyfikacji danych w kontrolce GridView (poprzez jej inteligentny znacznik). 6. Przetestuj zachowanie strony przy współbieżnych modyfikacjach. 7. Wróć do graficznego edytora klas LINQ to SQL. Sprawdź wartości właściwości Update Check dla poszczególnych właściwości (kolumn) klas. Właściwość Update Check decyduje o tym czy atrybut jest uwzględniany przy automatycznie realizowanym przez LINQ to SQL optymistycznym zarządzaniu współbieżnością. 8. Umieść na stronie EmployeesByJob.aspx drugą kontrolkę LinqDataSource. Poprzez jej znacznik inteligentny wybierz opcję Configure Data Source. Wybierz z listy obiekt kontekstu i kliknij Next. 9. W kolejnym kroku konfiguracji źródła danych wybierz z listy tabelę ETATY. Nie wybieraj żadnego atrybutu grupującego. Wskaż do odczytu jedynie kolumnę NAZWA. Kliknij przycisk OrderBy i ustaw sortowanie danych rosnąco wg nazwy etatu. Zakończ pracę kreatora. 10. Powyżej kontrolki GridView umieść kontrolkę DropDownList. Korzystając z jej inteligentnego znacznika powiąż ją z drugą kontrolką LinqDataSource. Zarówno jako wartość wyświetlaną na liście jak i stanowiąca wartość wyboru wskaż nazwę etatu.
11. Włącz AutoPostBack dla listy rozwijanej. 12. Przejdź do konfiguracji źródła danych dla GridView (poprzez inteligentny znacznik). Wywołaj okno konfiguracji wyrażenia WHERE. Jako filtrowaną kolumnę wskaż ETAT, jako operator porównanie równościowe, jako źródło do porównania kontrolkę listy rozwijanej. Kliknij przycisk Add aby dodać tak zbudowany warunek selekcji. 13. Poprzedź listę rozwijaną na stronie tekstem Wybierz etat:, a po liście umieść oddzielającą poziomą linię. 14. Zapisz zmiany. Uruchom i przetestuj działanie strony.
Ćwiczenie 3 Celem ćwiczenia jest wykorzystanie mechanizmu Partial Page Update oferowanego przez ASP.NET AJAX.. Kroki ćwiczenia: 1. Przejdź do edycji źródła strony EmployeesByJob.aspx. 2. Umieść na stronie element ScriptManager. 3. Umieść na stronie wewnątrz formularza kontrolkę UpdatePanel z zawartymi w niej elementami ContentTemplate i Triggers. 4. Przenieś kontrolkę GridView do wnętrza elementu ContentTemplate. 5. Wskaż listę rozwijaną jako asynchroniczny wyzwalacz dla UpdatePanel. 6. Zapisz zmiany. Uruchom i przetestuj działanie strony.