750 likes | 994 Views
Univerzitet u Beogradu Fakultet organizacionih nauka. Primena Entity Framework-a u izradi veb aplikacija. Završni rad. Komisija : Dr doc. Saša D. Lazarević , mentor Dr Siniša Vlajić , član komisije Dr Slađan Babarogić , član komisije. Student: Aleksandar Ilić , 232/05.
E N D
Univerzitet u Beogradu Fakultetorganizacionihnauka PrimenaEntity Framework-a u izradivebaplikacija Završni rad Komisija: Dr doc. Saša D. Lazarević, mentor DrSinišaVlajić, člankomisije DrSlađanBabarogić, člankomisije Student: Aleksandar Ilić, 232/05
Sadržaj • Definisanjeproblema • Tehnologije • Entity Framework
Karakteristikevebaplikacija • Često se oslanjajunarazličitebazepodataka • Običnokoristerelacionebazepodataka (SQL dijalekti) • Zasnovanenaobjektno-orijentisanojparadigmi
Problemisavremenihvebaplikacija • Jazizmeđuobjektnogirelacionogmodela • Potrebnopoznavanjerazličitihjezikazaupitenadbazompodataka • Programskalogkaprilagođenajednojvrstibazepodataka – promenabazepodatakaiziskujekrupneizmene u programskojlogici
Rešenje • Omogućiti da logikavebaplikacijebudenezavisna od bazepodatakanakoju se oslanja • Omogućitipromenutipabazepodatakauzminimalnepromene u programskojlogici • Obezbeditikreiranjebazepodatakabezznanjajezikazaupitenadbazom
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 kojisadržiskupservisazaizraduvebaplikacija • Vebaplikacije se mogupisati u bilokom CLR (Common Language Runtime) jeziku (Visual Basic, C#..) • Vrste ASP.NET projekata: • Web site • Web application • Web service • AJAX serverskekontrole
ASP.NET - MVC • MVC – Model - View – Controller • Razdvajanjestruktureaplikacije u višelogičkihslojeva • Tri logičkeceline: • Modeli – zaduženiza rad sapodacima • Pogledi – zaduženizakorisničkiinterfejs • Kontroleri – zaduženizaobraduzahtevakorisnika
LINQ • LINQ – Language INtegrated Query • Programski model kojim se proširujefunkcionalnostprogramskihjezika u .NET-u • Omogućavapristuprazličitimtipovimakolekcijapodatakakorišćenjemupitaisteilisličnesintakse • Upitipodsećajuna SQL • Upiti se prevode u odgovarajućeprogramskekodoveprilikomizvršavanjaprograma • Implementacije: • LINQ zaobjekte • LINQ za ADO.NET: • LINQ za SQL • LINQ zaentitete • LINQ zaDataSet • LINQ za XML
Razor View Engine • Programskasintaksazakreiranješablonadinamičkihvebstranica • Omogućavaintegrisanje C# i/ili VB sa HTML-om • Nijepotrebnoznanjenovogjezika
Microsoft Visual Web Developer Express 2010 C# • Integrisanorazvojnookruženje • Specijalizovanoza ASP.NET ikreiranjevebaplikacija • Podržava .NET 4.0
IIS Express Web server • Verzija IIS Web serveraprilagoženaza rad u razvojnomokruženju • Podržava URL rewrite imože da pokrene ASP.NET MVC aplikacije • Nalazi se u sklopuVisual Studio-a • Podržaniprotokoli: HTTP, HTTPS, WCF preko HTTP • Pokreće se izaustavlja od stranekorisnikai ne zahtevaadministratorskaprava • Omogućava rad višekorisnikanaistomračunaru
SQL Server 2008 Express • Sistemzarelacionebazepodatakarazvijen od strane Microsoft-a • Podrškazajezikeupita • T-SQL • ANSI-SQL • SQL Server Express je besplatnaverzija SQL Server-a
Entity Framework • Alatzaobjektno-relacionopreslikavanje (ORM – Object-Relational Mapping) • Oslanja se na model podatakaentiteta (EDM – Entity Data Model) • Ključnekomponente • EDM metapodaci • Objektniservis • EntityClient • ADO.NET Data Provider
Entity Framework - EDM • Srž Entity Framework-a • Zasniva se namodelurelacijaentiteta (ERM – Entity Relationship Model) • Entitetidefinišustrukturu, ne iponašanje • Entitet je sličanšemitabele u bazi, s timštoopisujedomenskuklasu • EDM omogućavaprogramerima da preuzimajupodatkeizrelacionebaze, populišuentitete a zatimisnimeeventualneizmenenadnjima
Entity Framework - Entiteti • Delovikonceptualnogmodelaopisanipomoću EDM-a • Domenskeklasegenerisanenaosnovuentiteta – klaseentitetailiobjektientiteta • Klaseentiteta se razlikuju od domenskihklasapo tome štoklaseentitetasadržesamoatribute, ne imetode (osim GET i SET) • Moguće je definisatirelacijeizmeđuentiteta
EDM - metapodaci • Implementacija EDM u Entity Frameworku je sadržana u tri XML fajla (tokomizvršenjaprograma) • Prilikompisanjaprograma, sva tri fajlasuspojena u jedan, EDMX fajl • EDMX sadrži: • Konceptualni model • Model bazepodataka • Specifikacijupreslikavanja • Ove tri komponentepostaju tri zasebnafajlatokomizvršenjaprograma
EDMX • Sve tri komponenteimajusvoju XML definicijuunutar EDMX fajla: • CSDL (Conceptual Schema Definition Language) zaopisšemekonceptualnogmodela / konceptualnašema • SSDL (Storage Schema Definition Language) – zaopisšememodelabazepodataka / šemabazepodataka • MSL (Mapping Specification Language) – zaopispreslikavanjaizmeđušemekonceptualnogmodelaimodelabazepodataka / šemapreslikavanja
EDMX - CSDL • Konceptualnašema je unutar<edmx:ConceptualModels></edmx:ConceptualModels> elementa • Opisujeentitete, kolekcijeentitetairelacijeizmeđunjih • Sastoji se izsledećihelemenata • EntityContainer • EntitySet • AssociationSet • EntityType
EDMX – CSDL • EntityContainer element je obmotnica (wrapper) zaEntitySetiAssociationSetelemente u CSDL-u • Ulaznatačkazaupitejer se u EntitySetelementimadefinišukolekcijeentitetakoje se koristeprilikompisanjaupita • EntitySetopisujekolekcijujednogtipaentiteta • EntitySetimadvaatributa • Name – samnazivkolekcijeentiteta • EntityType – definiše tip entitetaiodgovaraEntityTypeelementima
EDMX – CSDL • EntityTypeopisujeentitete u konceptualnommodelu • ImaatributNamekojidefinišeimeentiteta • ElementiunutarEntityType: • Key – definišekojisuatributientitetaključevi (identifikatori) • Property – definišesveatributeentiteta u smislunaziva,tipapodataka, podrazumevanihvrednostiitd. • NavigationProperty – uskopovezanisarelacijamaizmeđuentiteta. Opisuju reference kazavisnimentitetimailikolekcijamaentiteta, opisanim u AssociationSetelementima
EDMX – CSDL • AssociationSetopisujerelacijeizmeđuentiteta u konceptualnommodelu • ImaatributNamekojidefinišenazivrelacije • U Database - first pristupupodrazumevanavrednostovogatributa je istakaoinazivspoljnogključa • Associationatributsadžiimeiprefikskojipredstavljanazivmodela • U okviruAssociationSetelementa se nalazeEndelementi • Oni opisujukrajeverelacijetjentitetekojisu u vezi: • Roleatributdefinišeentitetkojiučestvuje u vezi • EntitySetdefinišekolekciju tog entiteta
EDMX - SSDL • Šemabazepodatakaje u EDMX-u smeštenaunutar<edmx:StorageModels></edmx:StorageModels> • PostojeEntityTypeiPropertytagovikaoi u CSDL-u s timštoopisujustrukturutabela u baziikolone • Po strukturi, dosta je sličan CSDL-u • Razlikesu: • Schema element imaatributNamespacekoji se zaršava .Storesufiksom – čime se ukazuje da je u pitanjušema (model) bazepodataka • Postoji element ProviderManifestTokenkojisadržiinformaciju o vrstibazepodatakanakoju je povezanaaplikacija
EDMX - SSDL • Slično CSDL-u, postojeiAssocation, AssociationSetiReferentialConstraint • Association element, pored većpomenutihEndelemenata, imaiOnDelete element kojiopisuješta se dešavasazavisnimentitetomprilikombrisanjaglavnogentiteta • ReferentialConstraintelement opisujepravacrelacijeizmeđutabela u bazi, koristećielemente Principal iDependent • Dependent element opisujetabelukojasadrži u sebireferencunanekudrugutabeluprekospoljnogključa • Principal element opisujetabelunakojupokazujeDependent element
EDMX - MSL • Šemapreslikavanjamodelabazepodataka u model entiteta se nalaziizmeđu<edmx:Mappings></edmx:Mappings>tagova • Služizamapiranjeentitetabazepodataka u entitetekonceptualnogmodela • Sadržisledećeelemente • Mapping • EntityContainterMapping • EntitySetMapping • EntityTypeMapping • MappingFragment • ScalarProperty
EDMX - MSL • Mapping predstavljakoreni element MSL-a • EntityContainerMapping je dete Mapping elementaipredstavljakontejnerzasvapreslikavanja u modelu • EntitySetMapping se nalaziunutarEntityContainerMappingiunutarnjega se definišupreslikavanjananivoujednogentiteta • EntityTypeMapping je definisanzasvakiEntityType element koji se nalazi u CSDL-u. U TypeMappingatributu se nalazinazivEntityTypeelementaiz CSDL-a • MappingFragmentdefinišetabelu u bazikoja se preslikava u odgovarajućientitet. Zasvakutabelupostojiodgovarajući mapping fragment. StoreEntitySetatributovogelementa se odnosinaodgovarajućiEntitySet u SSDL-u • ScalarPropertyelementipreslikavajunazivatributaiz CSDL u odgovarajućiatributentiteta u SSDL-u (kolona u tabeli)
Entity Framework – Objektniservis • Skupključnihfunkcionalnosti u EF-u • Najčešće se koristiprilikompisanjaaplikacije • Nalazi se navrhustruktureiomogućava rad saobjektimaentiteta • ObjektniservisdefinšeEntityObjectklasu • Pomoćunje, objektniservisupravljasvimklasamaizvedenimizEntityObjectklase (objektientiteta) • Kreiranjeobjekataentiteta • Praćenjeizmena u objektima • Upravljanjerelacijama • Snimanjeizmena
Entity Framework – Praćenjeizmena • InstanciranjemobjektaklaseEntityObject, omogućava se objektnimservisima da “prate” tajobjekat • Prate se izmenenavrednostimaatributaobjektakaoiizmeneobjekatakojisu u relacijisapraćenimobjektom • U trenutkusnimanjaobjekta – objektniserviskoristiprikupljeneinformacije o nastalimizmenama • Na osnovuizmenagenerišu se odgovarajući SQL upitizasvakidodati, izmenjeniiliobrisaniobjekat. • Porede se postojećevrednostisaoriginalnimvrednostima (ukoliko one postoje)
Entity Framework - EntityClient • Aplikacioniinterfejskojiomogućavakomunikacijusabazom • Omogućavaizvršenjekomandiiupitazasmeštanje, brisanjeipreuzimanjepodatakaizbaze • Prilagođavarezultatepreuzimanjapodatakaizbazekako bi adekvatnomogli da se koriste od strane EDM-a • Najčešće se koristi od straneobjektnogservisa • Nijenamenjenzadirektnokorišćenje
Entity Framework – ADO.NET Data Provider • Zajedničkiinterfejs u .NET frejmvorkuzapovezivanjeikomunikacijusabazompodataka • U strukturi EF-a, sveostalekomponentesuizgrađenenadnjom • Predstavlja most između EF ibazepodataka • Pružainterfejsezakonekcijusa: • Microsoft SQL • MySQL • SQLite • PostgreSQL • Oracle
Kreiranje EDM-a • EDM se u EF možekreiratinavišenačina: • Database – first pristupom • Model – first pristupom • Database – first pristuppredstavljakreiranje EDM-a naosnovupostojećebazepodataka • Model – first pristuppredstavljakreiranje EDM-a pomoćualata Model Designer ikreiranjebazepodatakanaosnovumodela
EDM – Database First • Omogućavajednostavnokreiranje EDM-a igenerisanjedomenskihklasanaosnovupostojećebazepodataka • Baza se možeuvestinadvanačina • Uvoženjem .mdffajlakoji u sebinosistrukturubaze • Povezivanjemsaserverombazepodataka
Database First • Pretpostavićemo da je Web projekatvećkreiran u Visual Studio-u
Database First – kreiranjemodela • Entity Model kreira se takošto u Models direktorijumuprojektadodajemokomponentuprojekta ADO.NET Entity Data Model
Database First – kreiranjemodela • Kako bi generisali model po Database – First pristupu, potrebno je odabratiopciju “Generate from Database” • Nakon toga je potrebnopodesitiparametrekonekcijena SQL bazuiliodabratilkaciju .mdffajla
Database First – kreiranjemodela • Poslednjikorakje odabirobjekatabazekojetrebauvestiu model • Moguće je uvestitabele, pogledei procedure • Takođe, moguće je podesitida li će model sadržatispoljašnjeključeveipromenitinazivmodela
Database First – kreiranjemodela • Rezultat procedure je EDMX fajlunutar Models foldera • Otvaranjemmodelapomoću Model Designer-a može se videtikako je EF interpretiraotabele
Database First – EDMX • Relacioni model baze u odnosuna 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 • Zasvakutabelu u bazipostojeodgovarajućientiteti u modelu • Izuzetak je tabelaProizvodTag, kojapredstavljaagregacijutabelaProizvodi Tag, a koju je EF prepoznaokaoviše – viševezuizmeđuentiteta • Sličnoentitetima, zasvakukolonu u tabelipostojiodgovarajućiatributodgovarajućegentiteta u modelu • Odabiromatributa u dijagramumoguće je videtidetalje u vezisaatributima (tip atributa, da li je atributključ, podrazumevanevrednosti…)
Database First - EDMX • Pored skalarnihatributa, postojeiNavigationPropertiesatributikoji se odnosenavezeizmeđuentiteta • Naziviodgovarajunazivimaentitetailikolekcijamaentieta (zavisi od kardinalnostiveze) • Pomoćunjih se pristupaentitetimailikolekcijamaentitetanakojekonkretanentitetimareferencu • Primer – EntitetProizvodiimasledećeatribute • Kategorije • Komentaris • Proizvodjaci • Tagovis
Database First - EDMX • Poredećirelacionimodel iEDMmožese videti da vezeizmeđuentiteta u EDMX-u odgovarajuvezamaizmeđuodgovarajućihtabela u bazi • Primer: vezaizmeđuentitetaProizvodiiKategorije
EDMX - Struktura • Otvaranjem EDMX-a pomoćupregledača XML fajlovamožemovidetistrukturu EDMX-a u XML formatu • EDMX se, kaoštosmoranijenavelisastojiiz • SSDL • CSDL • MSL
EDMX - SSDL • Pregledom SSDL-a može se utvrditi da zasvakutabelu u bazipostojeadekvatniEntitySetElementiunutarEntityContainerelementa
EDMX - SSDL • SličnoEntitySetelementima, u okviruEntityContainerelemenata, postojiiodgovarajućiAssociationSetelementizasvakuvezuizmeđutabele u bazi. • U ovomdeluSSDL-a ne postojedetaljikaoštosuatributientitetanitidetalji u vezisavezamaizmeđuentiteta. Ti detalji se nalaze u EntityTypeiAssociationelementima.
EDMX - SSDL • EntityTypebližeobjašnjavapreslikavanjetabele u odgovarajućientitetbazepodataka. • Nameatributodgovaranazivutabele u bazi. • Propertyelementiodgovarajukolonama u tabeli.
EDMX - SSDL • Associationelementi u SSDL-u se odnosenavezeizmeđutabela. • Svakavezaprekospoljnogključaizmeđudvetabeleimasvojodgovarajući Association element. • SličnokaoAssociationSet, svakiAssociation element imadvaEndelementa. • Pored Endelemenata, Associations element imaiReferentialConstraintsloženi element koji u sebisadržiPrincipaliDependentelemente.
EDMX - CSDL • CSDL je postrukturisličanstrukturiSSDL-a. EntitySet, AssociationSetiAssociationelementiimajuistustrukturukaoiSSDL • EntityTypeelementiimajudodatneelemente u odnosunastrukturu SSDL-a, u viduNavigationPropertieselemenata • Primer: EntitySetProizvodiimaNavigationPropertieskoji se odnosenaentiteteKategorije, Proizvodjaci, kaoinakolekcijeentitetaTagovisiKomentaris. • Od kardinalnostivezeizmeđuentitetazavisi da li će se NavigationPropertiesodnositinaentitetilikolekcijuentiteta. • U CSDL-u ne postojiEntitySetnitiEntityTypeProizvodTagjer je to predstavljenokaoviše– viševezaizmeđuentitetaProizvodi Tag
EDMX - MSL • U MSL-u, zasvaki set entiteta, entitetišemebazepodatakapreslikavaju u entitetkonceptualnešeme. • Ne postojipreslikavanjeentitetaProizvodTagoviizšemebazepodatakazatošto ne postojiodgovarajućientitet u konceptualnojšemi.
EDM – Klaseentiteta • PrilikomuvoženjabazepodatakaprimenomDatabase - Firstpristupa, EFautomatskigenerišeiklaseentiteta • One se nalaze u Models direktorijumuifajl u kome se nalazevidljiv je prilikomproširenjaikoniceEDMXfajla
EDM – Klaseentiteta • Generator kodagenerišeklaseentitetanaosnovuCSDL-a. • Generišese klasaContext, naosnovuEntityContainerelementa u CSDL-u, prekokoje je mogućepristupitisvimentitetima • Klaseentiteta se generišuzasvakiEntitySet element u CSDL-u.