LINQ TO SQL w dużym skrócie jest to zintegrowany język zapytao pozwalający na mapowanie relacyjnych baz danych na model obiektowy.



Podobne dokumenty
1 LINQ. Zaawansowane programowanie internetowe Instrukcja nr 1

Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody

Bazy danych dla producenta mebli tapicerowanych. Bartosz Janiak Marcin Sikora Wrocław r.

Microsoft.NET: LINQ to SQL, ASP.NET AJAX

ASP.NET MVC. Podstawy. Zaawansowane programowanie internetowe Instrukcja nr 3

Należy uruchomid program: Start-Wszystkie programy- Microsoft Office- Microsoft Office Access 2007

Wykład 12. Programowanie serwera MS SQL 2005 w C#

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

Programowanie MSQL. show databases; - pokazanie jakie bazy danych są dostępne na koncie

Wprowadzenie do Doctrine ORM

Leszek Stasiak Zastosowanie technologii LINQ w

Baza danych sql. 1. Wprowadzenie

Założenia do ćwiczeń: SQL Server UWM Express Edition: \SQLEXPRESS. Zapoznaj się ze sposobami użycia narzędzia T SQL z wiersza poleceń.

PHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych:

PHP: bazy danych, SQL, AJAX i JSON

Instrukcja laboratoryjna

Projektowanie obiektowe oprogramowania Wykład 9 Wzorce architektury aplikacji (1) Wiktor Zychla 2013

Instalacja SQL Server Express. Logowanie na stronie Microsoftu

enova Systemowe Narzędzia Projektowe

Estomed2. 1. Wstęp. 2. Instalacja Systemu Estomed Jak zainstalować Estomed2. Hakon Software sp. z o. o. Podręcznik instalacji

Baza danych sql. 1. Wprowadzenie. 2. Repozytaria generyczne

Programowanie w MS Visual Studio 2005 z wykorzystaniem MS SQL Server 2005

LABORATORIUM 8,9: BAZA DANYCH MS-ACCESS

Inżynieria Programowania Laboratorium 3 Projektowanie i implementacja bazy danych. Paweł Paduch paduch@tu.kielce.pl

Programowanie obiektowe

Soneta Sp. z o.o. Standardowe kreatory CRM

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny technologiczny Politechnika Śląska

Konfiguracja programu

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny technologiczny Politechnika Śląska

Instytut Mechaniki i Inżynierii Obliczeniowej fb.com/groups/bazydanychmt/

Dokumentacja instalacyjna i konfiguracyjna Aplikacja ADR. Wersja dokumentu 1.0. Strona 1/9

TEST E.14 BAZY DANYCH

Db4o obiektowa baza danych wersja.net

Wstęp. Opis ten dotyczy wydziałów orzeczniczych.

Wykład 5 Okna MDI i SDI, dziedziczenie

Instrukcja instalacji programu ARPunktor wraz z serwerem SQL 2005 Express

Systemy baz danych Prowadzący: Adam Czyszczoń. Systemy baz danych. 1. Import bazy z MS Access do MS SQL Server 2012:

Windows Workflow Foundation (wprowadzenie - prosty przykład Sequential Workflow):

Usługi analityczne budowa kostki analitycznej Część pierwsza.

BACKUP BAZ DANYCH MS SQL

Uruchamianie bazy PostgreSQL

D:\DYDAKTYKA\ZAI_BIS\_Ćwiczenia_wzorce\04\04_poprawiony.doc 2009-lis-23, 17:44

Programowanie w Ruby

Aleksander Galisz. Gf aktura 1.0. Podręcznik użytkownika

Instrukcja zmiany załączników we wniosku o dofinansowanie zwróconymdo poprawy.

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

TEMAT ĆWICZENIA Zapoznanie z technologią LINQ

Program RMUA. Instrukcja konfiguracji i pracy w programie. (Wersja 2)

5 AS SP.NET MVC. Walidacja danych. Zaawansowane programowanie internetowe Instrukcja nr 5

Konwersja bazy Sybase ASA Runtime do Microsoft SQL Server

Podstawy technologii WWW

MobiReg nowoczesny dziennik internetowy. Ocena opisowa

ZAPOZNANIE SIĘ ZE SPOSOBEM PRZECHOWYWANIA

Walidacja danych w ASP.NET MVC

Zarządzanie Infrastrukturą IT

Programowanie w Ruby

News gadget dla urzędu Jak szybko i skutecznie dostarczyd informacje?

Microsoft.NET: ASP.NET MVC + Entity Framework (Code First)

Projektowanie baz danych za pomocą narzędzi CASE

Migracja bazy danych Microsoft Access *.mdb do Microsoft SQL 2008 Server R2 SP1 dla oprogramowania Płatnik

Zaawansowane aplikacje internetowe

Modelowanie obiektowe - Ćw. 1.

Polecenie 3.1: Uruchom SQL Server Management Studio, zaloguj się do serwera.

- Narzędzie Windows Forms. - Przykładowe aplikacje. Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy

4 AS SP.NET MVC. Widok. Zaawansowane programowanie internetowe Instrukcja nr 4

oprogramowanie mobilne Instrukcja obsługi PSR 2010

Dostęp do baz danych z serwisu www - PHP. Wydział Fizyki i Informatyki Stosowanej Joanna Paszkowska, 4 rok FK

Testowanie II. Celem zajęć jest zapoznanie studentów z oceną jakości testów przy wykorzystaniu metryk pokrycia kodu testami (ang. code coverage).

Instrukcja użytkownika

Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych

Bazy danych. Zenon Gniazdowski WWSI, ITE Andrzej Ptasznik WWSI

Pierwsze logowanie. 3. Aby zmienid hasło należy przejśd do profilu wybierając Twój profil w głównym menu.

Instrukcja instalacji systemu

Przychodnia 0. Stwórz projekt aplikacja konsolowa lub WPF (przemyśl wybór, bo zmiana może być czasochłonna). 1. Stwórz abstrakcyjną klasę Osoba.

BACKUP BAZ DANYCH FIREBIRD

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik

AKADEMIA GÓRNICZO-HUTNICZA im. Stanisława Staszica w Krakowie. Wydział Geologii, Geofizyki i Ochrony Środowiska. Bazy danych 2

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl

Jak przenieść bazę danych na zdalny serwer?

Wybrane problemy z dziedziny modelowania i wdrażania baz danych przestrzennych w aspekcie dydaktyki. Artur Krawczyk AGH Akademia Górniczo Hutnicza

System magazynowy małego sklepu.

PORADNIK JOOMLA! - nigdy nie klikamy w przeglądarce Cofnij/Back. Opuszczamy zakładkę w Joomla! klikając Zapisz lub Zamknij.

Laboratorium 1 - Programowanie proceduralne i obiektowe

UpSoft RCP wersja

Przewodnik instalacji i rozpoczynania pracy. Dla DataPage+ 2013

Instrukcja aktualizacji programu Integra 7

Materiały oryginalne: ZAWWW-2st1.2-l11.tresc-1.0kolor.pdf. Materiały poprawione

LINQ TO XML. Autor ćwiczenia: Marcin Wolicki

Piotr Dynia. PowerPivot. narzędzie do wielowymiarowej analizy danych

Aby zastosowad tabelę przestawną należy wybrad dowolną komórkę w arkuszu i z menu Wstawianie wybierz opcję Tabela Przestawna.

Przewodnik instalacji i rozpoczynania pracy. dla DataPage+ 2012

Instrukcja konfiguracji

Instrukcja instalacji certyfikatu na karcie kryptograficznej Certum Code Signing

Zadanie 1. Tworzenie nowej "strony sieci WEB". Będziemy korzystad ze stron w technologii ASP.NET.

Instrukcja użytkownika. Aplikacja dla Comarch ERP XL

Programowanie obiektowe

Transkrypt:

LINQ TO SQL w dużym skrócie jest to zintegrowany język zapytao pozwalający na mapowanie relacyjnych baz danych na model obiektowy. Zanim ktokolwiek postanowi użyd tego w swoim projekcie, należy zaznaczyd że można skorzystad z tego wyłącznie do baz firmy MS. Pozostałe bazy danych, będzie można obsłużyd za pomocą dblinq. Jest to narzędzie zewnętrzne dostępne na stronie: http://code.google.com/p/dblinq2007/downloads/list Na dzieo dzisiejszy DBLinq osiągnęło wersje 0.17 a komentarze i opisywane problemy raczej nie zachęcają do stosowania w większych projektach. Docelowo ma ono obsługiwad bazy PostgreSQL, MySQL oraz Oracle. Jeżeli już zdecydowaliśmy się na jedyny słuszny wybór producenta, zastanówmy się której z baz powinniśmy użyd. Możliwości mamy trzy: MsSQLServer w wersji Express lub pełnej, Baza danych MS Access, MsSQLServerCE Najbardziej interesującą opcją, z punktu widzenia programisty aplikacji desktopowych, jest oczywiście możliwośd dołączenia całej bazy najlepiej w formie jednego pliku do aplikacji. Wybór trzeciej opcji, pozwoli na realizacje powyższego wymagania. MsSQL Server CE wady Przede wszystkim wydajnośd samej bazy, która chyba jest pozbawiona jakichkolwiek optymalizacji. Wprowadzenie modyfikacji, lub przeszukiwanie, trwa zdecydowanie dłużej niż w bazach PostgreSQL, czy nawet MySQL Lite. Przekroczenie 2MB danych powoduje znaczny spadek wydajności. Rozwiązaniem może byd rozbicie bazy np. na cztery mniejsze bazy. Wykonanie mapowania wymaga wykorzystania narzędzia konsolowego. Ograniczenie 8KB na wiersz. Duża wada w przypadku serializowanych obiektów. Możliwośd obejścia poprzez dzieleniu obiektu na kilka pod elementów. Kurs LINQ TO SQL rozpocznijmy od stworzenia nowego projektu aplikacji konsolowej. Całośd projektu który pozwoli zapoznad się z opisywanymi rzeczami znajdzie się pod adresem http://czortcode.googlecode.com/files/linqkurs.zip Po stworzeniu nowego projektu musimy utworzyd nowy plik bazy danych. Z dostępnych opcji należy wybrad LocalDatabase i nadad nazwę np. BazaDanych.sdf.

Po utworzeniu bazy Visual będzie chciał tworzyd plik DataSet, klikamy cancel lub usuwamy po wygenerowaniu. Zaprezentowane za chwilę rozwiązania nie są idealnym rozwiązaniem projektowym, mają jedynie pokazad pewne funkcjonalności LINQ. Zacznijmy od stworzenia tabeli w bazie BazaDanych.sdf. Będziemy chcieli przechowywad w niej prosty obiekt osoba: Id Imie Nazwisko Klikamy dwa razy na plik bazy, powinno otworzyd się okno jak poniżej. Klikamy prawym na Tables i wybieramy CreateTable Tworzymy tabele, z automatyczną inkrementacją wartości klucza głównego:

Za autoinkrementację odpowiada pole identity ustawione na True. Kolejna ciekawostką jest wartośd Allows Nulls. Znaczenia chyba nie trzeba tłumaczyd, wynika natomiast z tego pewna niedogodnośd. Nie ma niejawnego rzutowania pomiędzy string a string? Wartośd typu string? różni się tym od normalnego tekstu, tym że może przyjąd wartośd null. Jeżeli stosuje się wartości typu nullable, doradzałbym stosowad je konsekwentnie. Sprawdzanie, konwersja itd. jest kłopotliwe. Po zatwierdzeniu tabeli, powinniśmy móc zobaczyd ją w serwer explorerze. Klikamy na tabeli osoba prawym i wybieramy opcje Show Table Data. Oczywiście nie ma w niej danych, ale w tym miejscu można je uzupełnid. Po dodaniu kilku wierszy, przechodzimy do obsługi bazy z poziomu kodu. Potrzebujemy przede wszystkim pliku mapowao bazy. Ma on rozszerzenie dbml i jest on tworzony przez narzędzie SQLMETAL. Aby móc się nim posługiwad musimy dodad odpowiednią ścieżkę, do zmiennej PATH w systemie. U mnie znajduje się ono w katalogu C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\ SQLMETAL używany jest z konsoli, jako pierwszy parametr podajemy nazwę bazy (w naszym przypadku BazaDanych.sdf), oraz nazwę generowanego pliku, w którym znajdą się mapowania (w

przykładzie drugi parametr to /dbml:plikmapowan.dbml). Po potwierdzeniu powinniśmy zobaczyd teks jak poniżej. Plik został wygenerowany, kolejnym krokiem jest dołączenie do projektu. W tym celu należy kliknąd prawym na projekcie i dodad Existing Item (trzeba dodatkowo wybrad opcję aby pokazywał wszystkie typy plików). Po otworzeniu go powinniśmy zobaczyd: Ostatnią rzeczą jaką należy wykonad jest napisanie kodu do obsługi. //Tworzymy obiekt typu osoba (klasa wygenerowana przez sqlmetal), id generowane automatycznie Osoba nowaosoba = new Osoba Imie = "Zbyszko", Nazwisko = "zbogdańca" ; //Nawiązujemy połączenie z bazą (nazwa klasy jest taka sama jak nazwa pliku bazy) BazaDanych polaczeniezbaza = new BazaDanych("BazaDanych.sdf"); //wstawienie obiektu do bazy polaczeniezbaza.osoba.insertonsubmit(nowaosoba); polaczeniezbaza.submitchanges();//zatwierdzenie zmian Linq daje ogromne możliwości ze względu na swoją elastycznośd. Poniżej przedstawiam kilka sposobów na pobranie informacji z bazy danych. //1 sposób Console.WriteLine(polaczenieZBaza.Osoba.Where( i => i.imie.contains("zbysz")).first().imie); //2 sposób Func<Osoba, bool> warosoba = (tmposoba) => (tmposoba.imie.contains("zbysz")); List<Osoba> listaos = polaczeniezbaza.osoba.where(warosoba).tolist(); listaos.foreach(delegate(osoba tmp) Console.WriteLine(tmp.Imie); ); //3 sposób var varosoby = from os in polaczeniezbaza.osoba select os;

Console.WriteLine(varOsoby.First().Imie); Console.ReadKey(); Często pojawia się koniecznośd rozszerzenia tak przygotowanych klas dodając np. dodatkowy konstruktor. Przyjrzyjmy się uważnie wygenerowanemu plikowi PlikMapowan.dbml. Składa się on z dwóch części: PlikMapowan.dbml.layout oraz PlikMapowan.designer.cs, gdy w designerze klikniemy na wygenerowanej klasie i wybierzemy opcje View Code zostanie utworzony trzeci plik PlikMapowan.cs. W nim będziemy mogli rozszerzad i modyfikowad klasy. Jest to możliwe dzięki oznaczeniu wszystkich wygenerowanych klas jako partial. W PlikMapowan.cs, znajduje się szkielet klasy: namespace LinqKurs partial class Osoba Możemy uzupełnid go o metodę ToString która mogłaby się przydad w obiekcie. partial class Osoba public override string ToString() return Imie + "----" + Nazwisko;