LINQ_TO_SQL.pdf
(
515 KB
)
Pobierz
297398858 UNPDF
LINQ TO SQL
wdużymkróciejettozintegrowanyjzykzapytaopozwalającynamapowanie
relacyjnych baz danych na model obiektowy.
Zanimktokolwiekpotanowiużydtegowwoimprojekcie,należyzaznaczydżemożnakorzytadz
tegowyłączniedobazirmyMS. Pozotałebazydanych, bdziemożnaobłużydzapomocądblinq
Jettonarzdziezewntrznedotpnena stronie:
http://code.google.com/p/dblinq2007/downloads/list
Nadzieodzisiejszy DBLinq oiągnłowerje017 a komentarze i opisywane problemy raczej nie
zachcajądotoowaniawwikzychprojektach. Docelowo ma ono obsługiwadbazyPotgreSQL,
MySQL oraz Oracle Jeżeli już zdecydowalimy i na jedyny „łuzny” wybór producenta,
zastanówmyiktórejzbazpowinnimyużydMożliwocimamytrzy
MSQLServerwwerjiExprelubpełnej,
Baza danych MS Access,
MsSQLServerCE
Najbardziej intereującą opcją, z punktu widzenia programity aplikacji dektopowych, jet
oczywiciemożliwoddołączeniacałejbazynajlepiejwormiejednegoplikudoaplikacji Wybór
trzeciej opcji, pozwoli na realizacjepowyżzegowymagania
MsSQL Server CE
–wady
Przede wzytkim wydajnod amej bazy, która chyba jet pozbawiona jakichkolwiek
optymalizacji. Wprowadzeniemodyikacji,lubprzezukiwanie,trwazdecydowaniedłużejniż
w bazach PostgreSQL, czy nawet MySQL Lite.
Przekroczenie2MBdanychpowodujeznacznypadekwydajnociRozwiązaniemmożebyd
rozbicie bazy np. na cztery mniejsze bazy.
Wykonanie mapowaniawymagawykorzytanianarzdziakonolowego
Ograniczenie8KBnawierzDużawadawprzypadkuerializowanychobiektówMożliwod
obejciapoprzezdzieleniuobiektunakilkapod elementów
Kurs LINQ TO SQL rozpocznijmy od stworzenia nowego projektu –aplikacjikonolowejCałod
projektu który pozwoli zapoznad i z opiywanymi rzeczami znajdzie i pod adreem
http://czortcode.googlecode.com/files/LinqKurs.zip
Po stworzeniu nowego projektu musimy
utworzydnowyplikbazydanychZdotpnychopcjinależywybradLocalDatabaeinadadnazwnp
BazaDanych.sdf.
PoutworzeniubazyViualbdziechciałtworzydplikDataSet,klikamycancellubuuwamypo
wygenerowaniuZaprezentowanezachwilrozwiązanianieąidealnymrozwiązaniemprojektowym,
mają jedynie pokazad pewne unkcjonalnoci LINQ Zacznijmy od tworzenia tabeli w bazie
„BazaDanychd”
Bdziemychcieliprzechowywadwniejprotyobiektooba
Id
Imie
Nazwisko
Klikamydwarazynaplikbazy,powinnootworzydioknojakponiżejKlikamy prawym na Tables i
wybieramy CreateTable
Tworzymytabele,zautomatycznąinkrementacjąwartocikluczagłównego
Za
autoinkrementacjodpowiadapoleidentityutawionenaTrueKolejnaciekawotkąjetwartod
Allows Nulls. Znaczenia chybanietrzebatłumaczyd,wynikanatomiatztegopewnaniedogodnod
Niemaniejawnegorzutowaniapomidzy„
string
”a„
string?
”Wartodtyputring? różniitymod
normalnegotektu,tymżemożeprzyjądwartodnullJeżelitoujeiwartocitypunullable,
doradzałbym toowad je konekwentnie Sprawdzanie, konwerja itd jet kłopotliwe Po
zatwierdzeniutabeli,powinnimymóczobaczydjąwerwerexplorerzeKlikamynatabeliooba
prawymiwybieramyopcjeShowTableDataOczywicieniemawniejdanych, ale w tym miejscu
możnajeuzupełnid
Pododaniukilkuwierzy,przechodzimydoobługibazyzpoziomukodu Potrzebujemy przede
wzytkimplikumapowaobazyMaonrozzerzeniedbml ijetontworzonyprzeznarzdzie
SQLMETLbymócinimpoługiwadmuimydodadodpowiedniącieżk,dozmiennejPTHw
ytemie U mnie znajduje i ono w katalogu „C:\Program Files\Microsoft
SDKs\Windows\v6.0A\bin\”
SQLMETLużywanyjetzkonoli,jakopierwzyparametrpodajemynazwbazy(w naszym
przypadku BazaDanych.sdf),oraznazwgenerowanegopliku,wktórymznajdąimapowania (w
przykładziedrugi parametr to /dbml:PlikMapowan.dbml). Po potwierdzeniu powinnimyzobaczyd
tekjakponiżej
Plikzotałwygenerowany,kolejnymkrokiemjetdołączeniedoprojektuWtymcelunależykliknąd
prawymnaprojekcieidodadExisting Item (trzeba dodatkowo wybrad opcjaby pokazywałwzytkie
typyplików). Po otworzeniugopowinnimyzobaczyd
Otatniąrzecząjakąnależywykonadjetnapianiekodudoobł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 ogromnemożliwoci zewzgldu na woją elatycznodPoniżej przedtawiam kilka
poobównapobranieinormacjizbazydanych
//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();
Cztopojawiaikoniecznodrozzerzeniatakprzygotowanychkladodającnp. dodatkowy
konstruktor. Przyjrzyjmy iuważniewygenerowanemu plikowi PlikMapowan.dbmlSkładaionz
dwóchczci: 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. WnimbdziemymoglirozzerzadimodyikowadklayJettomożliwedziki
oznaczeniu wszystkich wygenerowanych klas jako partial. W PlikMapowan.cs,znajdujeizkielet
klasy:
namespace
LinqKurs
{
partial
class
Osoba
{
}
}
Możemy uzupełnidgoometodToStringktóramogłabyiprzydadwobiekcie
partial
class
Osoba
{
public
override
string
ToString()
{
return
Imie +
"----"
+ Nazwisko;
}
}
Plik z chomika:
jacek_040
Inne pliki z tego folderu:
SQL.doc
(281 KB)
plsql_fsql.ppt
(62 KB)
SQL10G.pdf
(780 KB)
sql2.pdf
(224 KB)
plsql.pdf
(580 KB)
Inne foldery tego chomika:
5_VoIP
Asterisk
eng
eng opisy urzadzen
Fax & Telephony
Zgłoś jeśli
naruszono regulamin