EDMX - macromedia future award

Report
Univerzitet u Beogradu
Fakultet organizacionih nauka
Primena Entity Framework-a u
izradi veb aplikacija
Završni rad
Komisija:
Student:
Dr doc. Saša D. Lazarević, mentor
Dr Siniša Vlajić, član komisije
Dr Slađan Babarogić, član komisije
Aleksandar Ilić, 232/05
Sadržaj
 Definisanje problema
 Tehnologije
 Entity Framework
Karakteristike veb aplikacija
 Često se oslanjaju na različite baze podataka
 Obično koriste relacione baze podataka (SQL dijalekti)
 Zasnovane na objektno-orijentisanoj paradigmi
Problemi savremenih veb
aplikacija
 Jaz između objektnog i relacionog modela
 Potrebno poznavanje različitih jezika za upite nad
bazom podataka
 Programska logka prilagođena jednoj vrsti baze
podataka – promena baze podataka iziskuje krupne
izmene u programskoj logici
Rešenje
 Omogućiti da logika veb aplikacije bude nezavisna od
baze podataka na koju se oslanja
 Omogućiti promenu tipa baze podataka uz minimalne
promene u programskoj logici
 Obezbediti kreiranje baze podataka bez znanja jezika
za upite nad bazom
Tehnologije
 Entity Framework
 LINQ
 ASP.NET
 Razor view engine
 Microsoft Visual Web Developer Express 2010 C#
 SQL Server Express
 IIS Express Web Server
ASP.NET
 Deo .NET-a koji sadrži skup servisa za izradu veb
aplikacija
 Veb aplikacije se mogu pisati u bilo kom CLR
(Common Language Runtime) jeziku (Visual Basic,
C#..)
 Vrste ASP.NET projekata:




Web site
Web application
Web service
AJAX serverske kontrole
ASP.NET - MVC
 MVC – Model - View – Controller
 Razdvajanje strukture aplikacije u više logičkih slojeva
 Tri logičke celine:
 Modeli – zaduženi za rad sa podacima
 Pogledi – zaduženi za korisnički interfejs
 Kontroleri – zaduženi za obradu zahteva korisnika
LINQ
 LINQ – Language INtegrated Query
 Programski model kojim se proširuje funkcionalnost programskih
jezika u .NET-u
 Omogućava pristup različitim tipovima kolekcija podataka korišćenjem
upita iste ili slične sintakse
 Upiti podsećaju na SQL
 Upiti se prevode u odgovarajuće programske kodove prilikom
izvršavanja programa
 Implementacije:
 LINQ za objekte
 LINQ za ADO.NET:
 LINQ za SQL
 LINQ za entitete
 LINQ za DataSet
 LINQ za XML
Razor View Engine
 Programska sintaksa za kreiranje šablona dinamičkih
veb stranica
 Omogućava integrisanje C# i/ili VB sa HTML-om
 Nije potrebno znanje novog jezika
Microsoft Visual Web Developer
Express 2010 C#
 Integrisano razvojno okruženje
 Specijalizovano za ASP.NET i kreiranje veb aplikacija
 Podržava .NET 4.0
IIS Express Web server
 Verzija IIS Web servera prilagožena za rad u
razvojnom okruženju
 Podržava URL rewrite i može da pokrene ASP.NET
MVC aplikacije
 Nalazi se u sklopu Visual Studio-a
 Podržani protokoli: HTTP, HTTPS, WCF preko HTTP
 Pokreće se i zaustavlja od strane korisnika i ne zahteva
administratorska prava
 Omogućava rad više korisnika na istom računaru
SQL Server 2008 Express
 Sistem za relacione baze podataka razvijen od strane
Microsoft-a
 Podrška za jezike upita
 T-SQL
 ANSI-SQL
 SQL Server Express je besplatna verzija SQL Server-a
Entity Framework
 Alat za objektno-relaciono preslikavanje (ORM –
Object-Relational Mapping)
 Oslanja se na model podataka entiteta (EDM – Entity
Data Model)
 Ključne komponente




EDM metapodaci
Objektni servis
EntityClient
ADO.NET Data Provider
Entity Framework - EDM
 Srž Entity Framework-a
 Zasniva se na modelu relacija entiteta (ERM – Entity
Relationship Model)
 Entiteti definišu strukturu, ne i ponašanje
 Entitet je sličan šemi tabele u bazi, s tim što opisuje
domensku klasu
 EDM omogućava programerima da preuzimaju podatke
iz relacione baze, populišu entitete a zatim i snime
eventualne izmene nad njima
Entity Framework - Entiteti
 Delovi konceptualnog modela opisani pomoću EDM-a
 Domenske klase generisane na osnovu entiteta – klase
entiteta ili objekti entiteta
 Klase entiteta se razlikuju od domenskih klasa po tome
što klase entiteta sadrže samo atribute, ne i metode
(osim GET i SET)
 Moguće je definisati relacije između entiteta
EDM - metapodaci
 Implementacija EDM u Entity Frameworku je sadržana
u tri XML fajla (tokom izvršenja programa)
 Prilikom pisanja programa, sva tri fajla su spojena u
jedan, EDMX fajl
 EDMX sadrži:
 Konceptualni model
 Model baze podataka
 Specifikaciju preslikavanja
 Ove tri komponente postaju tri zasebna fajla tokom
izvršenja programa
EDMX
 Sve tri komponente imaju svoju XML definiciju unutar
EDMX fajla:
 CSDL (Conceptual Schema Definition Language) za opis
šeme konceptualnog modela / konceptualna šema
 SSDL (Storage Schema Definition Language) – za opis
šeme modela baze podataka / šema baze podataka
 MSL (Mapping Specification Language) – za opis
preslikavanja između šeme konceptualnog modela i
modela baze podataka / šema preslikavanja
EDMX - CSDL
 Konceptualna šema je unutar
<edmx:ConceptualModels></edmx:ConceptualModels
> elementa
 Opisuje entitete, kolekcije entiteta i relacije između njih
 Sastoji se iz sledećih elemenata




EntityContainer
EntitySet
AssociationSet
EntityType
EDMX – CSDL
 EntityContainer element je obmotnica (wrapper) za
EntitySet i AssociationSet elemente u CSDL-u
 Ulazna tačka za upite jer se u EntitySet elementima
definišu kolekcije entiteta koje se koriste prilikom
pisanja upita
 EntitySet opisuje kolekciju jednog tipa entiteta
 EntitySet ima dva atributa
 Name – sam naziv kolekcije entiteta
 EntityType – definiše tip entiteta i odgovara EntityType
elementima
EDMX – CSDL
 EntityType opisuje entitete u konceptualnom modelu
 Ima atribut Name koji definiše ime entiteta
 Elementi unutar EntityType:
 Key – definiše koji su atributi entiteta ključevi
(identifikatori)
 Property – definiše sve atribute entiteta u smislu naziva,
tipa podataka, podrazumevanih vrednosti itd.
 NavigationProperty – usko povezani sa relacijama
između entiteta. Opisuju reference ka zavisnim entitetima
ili kolekcijama entiteta, opisanim u AssociationSet
elementima
EDMX – CSDL
 AssociationSet opisuje relacije između entiteta u
konceptualnom modelu
 Ima atribut Name koji definiše naziv relacije
 U Database - first pristupu podrazumevana vrednost ovog
atributa je ista kao i naziv spoljnog ključa
 Association atribut sadži ime i prefiks koji predstavlja naziv
modela
 U okviru AssociationSet elementa se nalaze End elementi
 Oni opisuju krajeve relacije tj entitete koji su u vezi:
 Role atribut definiše entitet koji učestvuje u vezi
 EntitySet definiše kolekciju tog entiteta
EDMX - SSDL
 Šema baze podataka je u EDMX-u smeštena unutar
<edmx:StorageModels></edmx:StorageModels>
 Postoje EntityType i Property tagovi kao i u CSDL-u s
tim što opisuju strukturu tabela u bazi i kolone
 Po strukturi, dosta je sličan CSDL-u
 Razlike su:
 Schema element ima atribut Namespace koji se zaršava
.Store sufiksom – čime se ukazuje da je u pitanju šema
(model) baze podataka
 Postoji element ProviderManifestToken koji sadrži
informaciju o vrsti baze podataka na koju je povezana
aplikacija
EDMX - SSDL
 Slično CSDL-u, postoje i Assocation, AssociationSet i
ReferentialConstraint
 Association element, pored već pomenutih End elemenata,
ima i OnDelete element koji opisuje šta se dešava sa
zavisnim entitetom prilikom brisanja glavnog entiteta
 ReferentialConstraint element opisuje pravac relacije
između tabela u bazi, koristeći elemente Principal i
Dependent
 Dependent element opisuje tabelu koja sadrži u sebi
referencu na neku drugu tabelu preko spoljnog ključa
 Principal element opisuje tabelu na koju pokazuje
Dependent element
EDMX - MSL
 Šema preslikavanja modela baze podataka u model
entiteta se nalazi između
<edmx:Mappings></edmx:Mappings> tagova
 Služi za mapiranje entiteta baze podataka u entitete
konceptualnog modela
 Sadrži sledeće elemente






Mapping
EntityContainterMapping
EntitySetMapping
EntityTypeMapping
MappingFragment
ScalarProperty
EDMX - MSL
 Mapping predstavlja koreni element MSL-a
 EntityContainerMapping je dete Mapping elementa i predstavlja
kontejner za sva preslikavanja u modelu
 EntitySetMapping se nalazi unutar EntityContainerMapping i
unutar njega se definišu preslikavanja na nivou jednog entiteta
 EntityTypeMapping je definisan za svaki EntityType element koji
se nalazi u CSDL-u. U TypeMapping atributu se nalazi naziv
EntityType elementa iz CSDL-a
 MappingFragment definiše tabelu u bazi koja se preslikava u
odgovarajući entitet. Za svaku tabelu postoji odgovarajući mapping
fragment. StoreEntitySet atribut ovog elementa se odnosi na
odgovarajući EntitySet u SSDL-u
 ScalarProperty elementi preslikavaju naziv atributa iz CSDL u
odgovarajući atribut entiteta u SSDL-u (kolona u tabeli)
Entity Framework – Objektni servis
 Skup ključnih funkcionalnosti u EF-u
 Najčešće se koristi prilikom pisanja aplikacije
 Nalazi se na vrhu strukture i omogućava rad sa
objektima entiteta
 Objektni servis definše EntityObject klasu
 Pomoću nje, objektni servis upravlja svim klasama
izvedenim iz EntityObject klase (objekti entiteta)
 Kreiranje objekata entiteta
 Praćenje izmena u objektima
 Upravljanje relacijama
 Snimanje izmena
Entity Framework – Praćenje izmena
 Instanciranjem objekta klase EntityObject, omogućava
se objektnim servisima da “prate” taj objekat
 Prate se izmene na vrednostima atributa objekta kao i
izmene objekata koji su u relaciji sa praćenim objektom
 U trenutku snimanja objekta – objektni servis koristi
prikupljene informacije o nastalim izmenama
 Na osnovu izmena generišu se odgovarajući SQL upiti
za svaki dodati, izmenjeni ili obrisani objekat.
 Porede se postojeće vrednosti sa originalnim
vrednostima (ukoliko one postoje)
Entity Framework - EntityClient
 Aplikacioni interfejs koji omogućava komunikaciju sa
bazom
 Omogućava izvršenje komandi i upita za smeštanje,
brisanje i preuzimanje podataka iz baze
 Prilagođava rezultate preuzimanja podataka iz baze
kako bi adekvatno mogli da se koriste od strane EDM-a
 Najčešće se koristi od strane objektnog servisa
 Nije namenjen za direktno korišćenje
Entity Framework – ADO.NET Data
Provider
 Zajednički interfejs u .NET frejmvorku za povezivanje i
komunikaciju sa bazom podataka
 U strukturi EF-a, sve ostale komponente su izgrađene
nad njom
 Predstavlja most između EF i baze podataka
 Pruža interfejse za konekciju sa:





Microsoft SQL
MySQL
SQLite
PostgreSQL
Oracle
Kreiranje EDM-a
 EDM se u EF može kreirati na više načina:
 Database – first pristupom
 Model – first pristupom
 Database – first pristup predstavlja kreiranje EDM-a na
osnovu postojeće baze podataka
 Model – first pristup predstavlja kreiranje EDM-a
pomoću alata Model Designer i kreiranje baze
podataka na osnovu modela
EDM – Database First
 Omogućava jednostavno kreiranje EDM-a i generisanje
domenskih klasa na osnovu postojeće baze podataka
 Baza se može uvesti na dva načina
 Uvoženjem .mdf fajla koji u sebi nosi strukturu baze
 Povezivanjem sa serverom baze podataka
Database First
 Pretpostavićemo da je Web projekat već kreiran u
Visual Studio-u
Database First – kreiranje modela
 Entity Model kreira se tako što u Models direktorijumu
projekta dodajemo komponentu projekta ADO.NET
Entity Data Model
Database First – kreiranje modela
 Kako bi generisali model po Database – First pristupu,
potrebno je odabrati opciju “Generate from Database”
 Nakon toga je potrebno podesiti parametre konekcije
na SQL bazu ili odabrati lkaciju .mdf fajla
Database First – kreiranje modela
 Poslednji korak je odabir objekata baze koje treba uvesti u model
 Moguće je uvesti tabele, poglede i procedure
 Takođe, moguće je podesiti da li će model sadržati spoljašnje
ključeve i promeniti naziv modela
Database First – kreiranje modela
 Rezultat procedure je EDMX fajl unutar Models foldera
 Otvaranjem modela pomoću Model Designer-a može
se videti kako je EF interpretirao tabele
Database First – EDMX
 Relacioni model baze u odnosu na EDMX
Kategorije (KategorijaID, Naziv)
Komentari (KomentarID, NazivPosetioca,
TeloKomentara, ProizvodID#)
Proizvodjaci (ProizvodjacID, Naziv)
Tagovi (TagID, Naziv)
Proizvodi(ProizvodID, Naziv, DatumUnosa,
Cena, Opis, ProizvodjacID#, KategorijaID#)
ProizvodTag (ProizvodID#, TagID#)
Database First - EDMX
 Za svaku tabelu u bazi postoje odgovarajući entiteti u
modelu
 Izuzetak je tabela ProizvodTag, koja predstavlja
agregaciju tabela Proizvod i Tag, a koju je EF
prepoznao kao više – više vezu između entiteta
 Slično entitetima, za svaku kolonu u tabeli postoji
odgovarajući atribut odgovarajućeg entiteta u modelu
 Odabirom atributa u dijagramu moguće je videti detalje
u vezi sa atributima (tip atributa, da li je atribut ključ,
podrazumevane vrednosti…)
Database First - EDMX
 Pored skalarnih atributa, postoje i NavigationProperties
atributi koji se odnose na veze između entiteta
 Nazivi odgovaraju nazivima entiteta ili kolekcijama
entieta (zavisi od kardinalnosti veze)
 Pomoću njih se pristupa entitetima ili kolekcijama
entiteta na koje konkretan entitet ima referencu
 Primer – Entitet Proizvodi ima sledeće atribute




Kategorije
Komentaris
Proizvodjaci
Tagovis
Database First - EDMX
 Poredeći relacioni model i EDM može se videti da veze
između entiteta u EDMX-u odgovaraju vezama između
odgovarajućih tabela u bazi
 Primer: veza između entiteta Proizvodi i Kategorije
EDMX - Struktura
 Otvaranjem EDMX-a pomoću pregledača XML fajlova
možemo videti strukturu EDMX-a u XML formatu
 EDMX se, kao što smo ranije naveli sastoji iz
 SSDL
 CSDL
 MSL
EDMX - SSDL
 Pregledom SSDL-a može se utvrditi da za svaku tabelu
u bazi postoje adekvatni EntitySet Elementi unutar
EntityContainer elementa
EDMX - SSDL
 Slično EntitySet elementima, u okviru EntityContainer
elemenata, postoji i odgovarajući AssociationSet
elementi za svaku vezu između tabele u bazi.
 U ovom delu SSDL-a ne postoje detalji kao što su
atributi entiteta niti detalji u vezi sa vezama između
entiteta. Ti detalji se nalaze u EntityType i Association
elementima.
EDMX - SSDL
 EntityType bliže objašnjava preslikavanje tabele u
odgovarajući entitet baze podataka.
 Name atribut odgovara nazivu tabele u bazi.
 Property elementi odgovaraju kolonama u tabeli.
EDMX - SSDL
 Association elementi u SSDL-u se odnose na veze između tabela.
 Svaka veza preko spoljnog ključa između dve tabele ima svoj
odgovarajući Association element.
 Slično kao AssociationSet, svaki Association element ima dva End
elementa.
 Pored End elemenata, Associations element ima i
ReferentialConstraint složeni element koji u sebi sadrži Principal i
Dependent elemente.
EDMX - CSDL
 CSDL je po strukturi sličan strukturi SSDL-a. EntitySet,
AssociationSet i Association elementi imaju istu strukturu
kao i SSDL
 EntityType elementi imaju dodatne elemente u odnosu na
strukturu SSDL-a, u vidu NavigationProperties elemenata
 Primer: EntitySet Proizvodi ima NavigationProperties koji se
odnose na entitete Kategorije, Proizvodjaci, kao i na
kolekcije entiteta Tagovis i Komentaris.
 Od kardinalnosti veze između entiteta zavisi da li će se
NavigationProperties odnositi na entitet ili kolekciju entiteta.
 U CSDL-u ne postoji EntitySet niti EntityType ProizvodTag
jer je to predstavljeno kao više – više veza između entiteta
Proizvod i Tag
EDMX - MSL
 U MSL-u, za svaki set entiteta, entiteti šeme baze
podataka preslikavaju u entitet konceptualne šeme.
 Ne postoji preslikavanje entiteta ProizvodTagovi iz šeme
baze podataka zato što ne postoji odgovarajući entitet u
konceptualnoj šemi.
EDM – Klase entiteta
 Prilikom uvoženja baze podataka primenom Database - First
pristupa, EF automatski generiše i klase entiteta
 One se nalaze u Models direktorijumu i fajl u kome se
nalaze vidljiv je prilikom proširenja ikonice EDMX fajla
EDM – Klase entiteta
 Generator koda generiše klase entiteta na osnovu
CSDL-a.
 Generiše se klasa Context, na osnovu EntityContainer
elementa u CSDL-u, preko koje je moguće pristupiti
svim entitetima
 Klase entiteta se generišu za svaki EntitySet element u
CSDL-u.
EDM – Object Context
 U ovom slučaju, parcijalna Context klasa se zove
ProdavnicaFONEntities
 Generisana je na osnovu EntityContainer elementa u
CSDL-u
 Izvedena je iz klase ObjectContext
 Ima tri vrste konstruktora:
 Bez argumenata – parametri konekcije se učitavaju iz
Web.Config fajla
 Connection String argument – parametri konekcije su
sadržani u prosleđenom stringu
 EntityConnection argument – parameti konekcije su
sadržani u atributima objekta klase EntityConnection
EDM – Object Context

ProdavnicaFonEntities ima 5 privatnih atributa koji su tipa ObjectSet:
 _Komentaris
 _Proizvodjacis
 _Proizvodis
 _Tagovis
 _Kategorijes

Odgovaraju EntitySet elementima u CSDL-u i predstavljaju kolekcije objekata
domenskih klasa koja omogućava upis, izmenu i brisanje objekata.

ObjectSet predstavlja osnovu zasve upite koji se pišu u aplikaciji bez obzira da li se
njime učitava jedan ili više objekata

Kako su atributi privatnog tima, to svaki atribut ima svoju GET metodu
EDM – Entiteti
 Svaki EntityType atribut elementa EntitySet u CSDL-u ima
svoj odgovarajuću parcijalnu klasu u modelu.
 Sve klase nasleđuju klasu EntityObject.
 U ovom slučaju postoje klase: Kategorije, Proizvodjaci,
Proizvodi, Tagovi, Komentari.
 Svaka od ovih klasa ima Factory metod kojom se kreira
instanca klase.
EDM – Entiteti
 Klasa ima i skalarne atribute koji odgovaraju Property
elementima pod odgovarajućim EntityType elementima
u CSDL-u.
 Za svaki od ovih skalarnih atributa postoji odgovarajuća
GET i SET metoda kojom se vraćaju i postavljaju
vrednosti atributa.
 Pored GET i SET metoda, postoje i metode
On[NazivSkalarnogAtributa]Changing i
On[NazivSkalarnogAtributa]Changed.
 Changing metoda se izvršava neposredno pre svake
promene vrednosti skalarnog atributa
 Changed metoda se izvršava neposredno nakon svake
promene vrednosti skalarnog atributa.
EDM – Entiteti
EDM – Entiteti
 Domenska klasa može sadržati i navigacione atribute,
ukoliko postoji veza sa kolekcijom drugih domenskih klasa.
 Za svaku kolekciju sa kojom je u vezi postoji po jedan
navigacioni atribut i za njega su definisane GET i SET
metode
 Pomoću ovih navigacionih atributa je moguće pristupiti
kolekciji objekata klasa entiteta sa kojima je posmatrani
entitet u vezi
 Navigacioni atribut može biti jedan objekat entiteta koji je u
relaciji sa trenutnim entitetom ili mogu biti kolekcija objekata
entiteta koji su u relaciji sa trenutnim entiteom.
 Koji će od ova dva tipa biti definisani za određeni atribut,
zavisi od kardinalnosti veze između dva entiteta.
EDM – Model First
 Model – first pristup kreiranju EDM-a koristi se u
slučajevima kada je potrebno kreirati aplikaciju koja
komunicira sa bazom podataka, koja još uvek nije
kreirana.
 Kod ovog pristupa, prvo se u Designer-u kreiraju
entiteti i veze između njih, a zatim se, na osnovu
EDMX-a kreira baza podataka.
 Kreiranje entiteta i veza između entieta je veoma
jednostavno i ne zahteva pisanje koda.
Model First
 Pretpostavićemo da je Web projekat već kreiran u
Visual Studio-u
Model First
 Entity Model kreira se tako što u Models direktorijumu
projekta dodajemo komponentu projekta ADO.NET
Entity Data Model
Model First
 U koraku za odabir sadržaja modela treba izabrati
Empty Model opciju
Model First – kreiranje
entiteta
 Entiteti se dodaju odabirom opcije Add Entity u
kontekstnom meniju na samom Designer-u.
Model First – definisanje atributa entiteta
 Atributi entiteta se dodaju odabirom opcije Add scalar
property... u konteksntom meniju na entitetu.
Model First – kreirani entiteti
Model First – veze između entiteta
 Veze između entiteta modela se kreiraju odabirom
opcije Add Association u kontekstnom meniju entiteta
Model First – veze između entiteta
Model First – kompletan model
 Kreiranjem ostalih odgovarajućih entiteta i veza
između entiteta dobija se EDM sličan onom koji je
dobijen pomoću Database - first metode
Model First – kreiranje baze podataka
 Postupak generisanja baze počinje odabirom opcije
Generate Database from Model u kontekstnom meniju
modela
 Prvi korak predstavlja definisanje/odabir konekcije na bazu
Model First – kreiranje baze podataka na
osnovu EDM-a
 Na sledećem koraku se može videti SQL skripta koja
će biti upotrebljena za kreiranje baze podataka.
 Rezultat postupka je SQL skripta koju bi trebalo izvršiti
na SQL serveru.
Operacije nad entitetima – novi entitet
 Snimanje novih entiteta se obavlja u nekoiko koraka
 Potrebno je kreirati objekat entiteta i dodeliti mu vrednosti
atributa(ne i ključnih), kreirati objekat klase
ProdavnicaFONEntities (objektni kontekst) kako bi imali
pristup metodama EF-a
 Sledeći korak je dodavanje kreiranog objekta u
odgovarajuću kolekciju objektnog konteksta
 Na kraju, pozivom metode SaveChanges() dodati entitet se
snima u odgovarajuću tabelu u bazi
Operacije nad entitetima – izmena
postojećeg entiteta
 Postupak sličan snimanju novog entiteta
 Razlika je u tome što entitet koji se snima mora
posedovati vrednost ključnog atributa
 Na kraju, pozivom metode SaveChanges() dodati
entitet se snima u odgovarajuću tabelu u bazi
Operacije nad entitetima – brisanje entiteta
 Operacija brisanja entiteta se izvršava tako što se nad
kolekcijom entiteta u objektu klase Context (u ovom
slučaj klase ProdavnicaFONEntities) poziva metoda
DeleteObject()
 Ova metoda kao argument prihvata objekat entiteta
kolekcije nad kojom se želi izvršiti brisanje.
Operacije nad entitetima – učitavanje
entiteta iz baze
 Učitavanje entiteta iz baze se u EF može izvršiti
pomoću LINQ upita nad kolekcijama entieta u okviru
ObjectContext klase
 Rezultati izvršavanja LINQ upita je kolekcija objekata
entiteta tipa IQueriable.
 Ovaj tip je pogodan iz razloga što je moguće izvršavati
LINQ upite nad njim.
Operacije nad entitetima – učitavanje
entiteta iz baze

similar documents