Tutorial: WCF RIA Services
Autor: Rafał Garbowski
Opublikowano: 2010-10-15
Wstęp
Silverlight WCF RIA Services to framework do tworzenia aplikacji biznesowych, które wykorzystują potencjał technologii Silverlight, uzupełniając go współpracą z serwisami WCF, bazami danych czy też aplikacjami użytkownika.
W tym tutorialu omówię WCF RIA Services na przykładzie witryny z asortymentem sklepu. Do działania wymagane są Visual Studio 2010 w wersji Professional lub wyższej, dodatek Silverlight 4 i SQL Server 2008.
Pierwsze kroki
Tworzymy projekt
Naszym szablonem będzie Silverlight Application.
W oknie New Silverlight Application zaznaczamy Enable WCF RIA Services. Nasze rozwiązanie zostanie podzielone na część klienta Silvelight i projekt witryny, która hostuje klienta.
Dodajemy ADO.NET Entity Data Model
Prawym przyciskiem myszy klikamy na projekt witryny Web i wybieramy Add New Item. Szablon ADO.NET Entity Data Models znajduje się w sekcji Data.
W oknie, które się pojawi, klikamy Generate from database. Następnie konfigurujemy połączenie z bazą danych. Jeśli występują błędy, należy się upewnić, czy SQL Server jest włączony. Jeśli połączenie przebiegło poprawnie, to przechodzimy do okna, gdzie wybieramy tabele. Po kliknięciu na Finish, wyświetli się schemat relacyjny naszego modelu. Następnie wciskamy F5 i sprawdzamy, czy wszystko jest w porządku.
Dodajemy klasę Domain Service
Dodajemy nowy Item, którym będzie Domain Service Class.
W oknie, które się pojawi, zaznaczamy wybrane przez nas wcześniej tabele.
Po kliknięciu OK zostaną wygenerowane metody do operacji na wybranych tabelach.
Wyświetlamy dane z ADO.NET Entity Data Model
Przechodzimy do widoku graficznego MainPage.xaml.
Z głównego menu wybieramy Data i klikamy Show Data Sources lub wciskamy jednocześnie klawisze Shift+Alt+D.
Przeciągamy dowolny model – oznaczony ikoną Data Grid – na layout graficzny. Kolumny zostaną wygenerowane automatycznie. Ustawiamy właściwość Width na Auto, aby szerokość tabeli dostosowała się do szerokości strony. Oto wynik:
Data Grid dostosowany do naszych potrzeb
Usuwamy zbędne kolumny
Klikamy na strzałkę z lewej strony nazwy tabeli i rozwija się lista z nazwami kolumn.Wyłączamy niepotrzebne kolumny, klikając na None z menu rozwijalnego.
Dodajemy kolumny z powiązanych tabel
Otwieramy plik Domain Service – w moim przypadku jest to DomainService1.cs – a następnie szukamy metody zwracającej rekordy z wybranej tabeli – dla tabeli Product taką funkcją jest GetProducts(). Do zwracanego obiektu, po kropce, dopisujemy: Include("NazwaTabeli").
Otwieramy kolejno plik DomainService1.metadata.cs i w klasie metadanych wybranej tabeli dekorujemy pole powiązanej tabeli następująco:
Pierwszy argument oznacza ścieżkę, natomiast drugi – nazwę kolumny.
Filtrowanie i edycja danych
Filtrowanie danych
Do pliku „ServiceDomain1.cs” dodajemy funkcję zwracającą produkty według podanej nazwy:
Zamiast zapytania LINQ,możemy użyć wyrażenia lambda.
Do naszego layoutu dodajemy Auto Complete Box.
W oknie DocumentOutline klikamy lewym przyciskiem myszy na Domain Data Source. W oknie Properties zmieniamy QueryName na nazwę metody do filtrowania, czyli GetProductsbyName.
Następnie edytujemy QueryParameters. Jako ParameterName wpisujemy argument naszej funkcji. Value bindujemy do właściwości Text kontrolki Auto Complete Box.
Gotowe, wciskamy Ctrl + F5 i testujemy aplikację. Innym sposobem na utworzenie kontrolki do filtrowania jest wykorzystanie, znajdującego się w oknie Data Sources, Data Gridu z zaznaczoną funkcją filtrującą.
Zapisanie danych
Komórki Data Gridu umożliwiają edycję wartości. Aby zapisać zmiany, tworzymy Click event dla przycisku do zapisu lub wykorzystujemy eventy Data Gridu, gdzie umieszczamy następujący kod:
ProductDomainDataSource jest obiektem, z którym powiązany jest nasz Data Grid.
Walidacja
Tworzymy klasę walidatora, którą implementujemy w pliku DomainService1.cs:
Następnie szukamy w pliku DomainService1.metadata.cs pola, które chcemy sprawdzać pod kątem błędów, i dekorujemy je tak jak poniżej:
Podsumowanie
Na zakończenie chciałbym dodać, że możemy dodawać do projektu własne kontrolki, np. Silverlight 4 April Toolkit. W dowolnym miejscu Toolboxa rozwijamy menu kontekstowe i wybieramy ChooseItems… Następnie, po wciśnięciu Browse, wybieramy plik z lokalizacji: C:\ProgramFiles\Microsoft SDKs\Silverlight\v4.0\Toolkit\Apr10\Bin. Kontrolki, takie jak: BusyIndicator, DataPager lubDataForm, mogą okazać się tu bardzo pomocne.