1 / 73

Primena Entity Framework-a u izradi veb aplikacija

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.

len
Download Presentation

Primena Entity Framework-a u izradi veb aplikacija

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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

  2. Sadržaj • Definisanjeproblema • Tehnologije • Entity Framework

  3. Karakteristikevebaplikacija • Često se oslanjajunarazličitebazepodataka • Običnokoristerelacionebazepodataka (SQL dijalekti) • Zasnovanenaobjektno-orijentisanojparadigmi

  4. Problemisavremenihvebaplikacija • Jazizmeđuobjektnogirelacionogmodela • Potrebnopoznavanjerazličitihjezikazaupitenadbazompodataka • Programskalogkaprilagođenajednojvrstibazepodataka – promenabazepodatakaiziskujekrupneizmene u programskojlogici

  5. Rešenje • Omogućiti da logikavebaplikacijebudenezavisna od bazepodatakanakoju se oslanja • Omogućitipromenutipabazepodatakauzminimalnepromene u programskojlogici • Obezbeditikreiranjebazepodatakabezznanjajezikazaupitenadbazom

  6. Tehnologije • Entity Framework • LINQ • ASP.NET • Razor view engine • Microsoft Visual Web Developer Express 2010 C# • SQL Server Express • IIS Express Web Server

  7. 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

  8. 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

  9. 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

  10. Razor View Engine • Programskasintaksazakreiranješablonadinamičkihvebstranica • Omogućavaintegrisanje C# i/ili VB sa HTML-om • Nijepotrebnoznanjenovogjezika

  11. Microsoft Visual Web Developer Express 2010 C# • Integrisanorazvojnookruženje • Specijalizovanoza ASP.NET ikreiranjevebaplikacija • Podržava .NET 4.0

  12. 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

  13. SQL Server 2008 Express • Sistemzarelacionebazepodatakarazvijen od strane Microsoft-a • Podrškazajezikeupita • T-SQL • ANSI-SQL • SQL Server Express je besplatnaverzija SQL Server-a

  14. 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

  15. 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

  16. 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

  17. 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

  18. 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

  19. EDMX - CSDL • Konceptualnašema je unutar<edmx:ConceptualModels></edmx:ConceptualModels> elementa • Opisujeentitete, kolekcijeentitetairelacijeizmeđunjih • Sastoji se izsledećihelemenata • EntityContainer • EntitySet • AssociationSet • EntityType

  20. 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

  21. 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

  22. 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

  23. 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

  24. 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

  25. 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

  26. 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)

  27. 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

  28. 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)

  29. 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

  30. 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

  31. 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

  32. EDM – Database First • Omogućavajednostavnokreiranje EDM-a igenerisanjedomenskihklasanaosnovupostojećebazepodataka • Baza se možeuvestinadvanačina • Uvoženjem .mdffajlakoji u sebinosistrukturubaze • Povezivanjemsaserverombazepodataka

  33. Database First • Pretpostavićemo da je Web projekatvećkreiran u Visual Studio-u

  34. Database First – kreiranjemodela • Entity Model kreira se takošto u Models direktorijumuprojektadodajemokomponentuprojekta ADO.NET Entity Data Model

  35. Database First – kreiranjemodela • Kako bi generisali model po Database – First pristupu, potrebno je odabratiopciju “Generate from Database” • Nakon toga je potrebnopodesitiparametrekonekcijena SQL bazuiliodabratilkaciju .mdffajla

  36. 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

  37. Database First – kreiranjemodela • Rezultat procedure je EDMX fajlunutar Models foldera • Otvaranjemmodelapomoću Model Designer-a može se videtikako je EF interpretiraotabele

  38. 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#)

  39. 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…)

  40. Database First - EDMX • Pored skalarnihatributa, postojeiNavigationPropertiesatributikoji se odnosenavezeizmeđuentiteta • Naziviodgovarajunazivimaentitetailikolekcijamaentieta (zavisi od kardinalnostiveze) • Pomoćunjih se pristupaentitetimailikolekcijamaentitetanakojekonkretanentitetimareferencu • Primer – EntitetProizvodiimasledećeatribute • Kategorije • Komentaris • Proizvodjaci • Tagovis

  41. Database First - EDMX • Poredećirelacionimodel iEDMmožese videti da vezeizmeđuentiteta u EDMX-u odgovarajuvezamaizmeđuodgovarajućihtabela u bazi • Primer: vezaizmeđuentitetaProizvodiiKategorije

  42. EDMX - Struktura • Otvaranjem EDMX-a pomoćupregledača XML fajlovamožemovidetistrukturu EDMX-a u XML formatu • EDMX se, kaoštosmoranijenavelisastojiiz • SSDL • CSDL • MSL

  43. EDMX - SSDL • Pregledom SSDL-a može se utvrditi da zasvakutabelu u bazipostojeadekvatniEntitySetElementiunutarEntityContainerelementa

  44. 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.

  45. EDMX - SSDL • EntityTypebližeobjašnjavapreslikavanjetabele u odgovarajućientitetbazepodataka. • Nameatributodgovaranazivutabele u bazi. • Propertyelementiodgovarajukolonama u tabeli.

  46. 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.

  47. 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

  48. EDMX - MSL • U MSL-u, zasvaki set entiteta, entitetišemebazepodatakapreslikavaju u entitetkonceptualnešeme. • Ne postojipreslikavanjeentitetaProizvodTagoviizšemebazepodatakazatošto ne postojiodgovarajućientitet u konceptualnojšemi.

  49. EDM – Klaseentiteta • PrilikomuvoženjabazepodatakaprimenomDatabase - Firstpristupa, EFautomatskigenerišeiklaseentiteta • One se nalaze u Models direktorijumuifajl u kome se nalazevidljiv je prilikomproširenjaikoniceEDMXfajla

  50. 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.

More Related