200 likes | 459 Views
Entity Framework. Andreas Knudsen, Bekk Consulting AS. 31/1 - 2008. Agenda. Generelt om Entity Framework Entity Data Model (EDM) Object Services Entity Client Arv Ymse annet Best Practices. Føles det kjent?. Generelt om Entity Framework.
E N D
Entity Framework Andreas Knudsen, Bekk Consulting AS 31/1 - 2008
Agenda • Generelt om Entity Framework • Entity Data Model (EDM) • Object Services • Entity Client • Arv • Ymse annet • Best Practices
Generelt om Entity Framework • O/R M – Data aksess på et høyere abstraksjonsnivå • Eksponerer databasen på en måte som gir mening for applikasjoner • Plattform for andre produkter • Dynamic Data • Data Services
Generelt om Entity Framework: Roadmap • Entity Framework Beta 3 er ute nå • Entity Framework Tools CTP 2 er ute nå • RTM forventet før sommeren • Påbygg til .Net 3.5
Generelt om Entity Framework • Bygger på ADO.Net 2.0 • Tre aksessmåter: • Object services /LINQ • Object services / ESQL • EntityClient • Spørringer defineres i kode og eksekveres i DB
Entity Data Model • Det applikasjonen ”har lyst å forholde seg til” • Entity • Relationship • En .edmx fil inneholder 3 deler • Konseptuell modell (.CSDL) • Lagringsmodell (.SSDL) • Mappingmodell (.MSL)
Object Services • Aksess vha LINQ • Sterkt typet • Behagelig å jobbe med • Aksess vha Entity SQL • Spørring kan sys sammen ved kjøretid • Change tracking • Automatisk
Entity Client • Lavnivå API som i ADO.Net 2.0 • Entity SQL (utvidet SQL) • DataReaders • Inneholder metadata • Tilgang til Serverspesifikke funksjoner • (Hvis ytelse er viktigst / du ikke bruker objekter / Reporting Services) • OBS! - foreløpig Read-Only
Arv i Entity Framework Vare Id Pris RabattVare AvslagVare Rabatt (%) Avslag(kr)
Arv i Entity Framework • En tabell per hierarki • Null–verdier der de ikke er relevante • Diskriminator - kolonner
Arv i Entity Framework • En tabell per type • Hver tabell inneholder ekstra data som trengs i forhold til basetype
Arv i Entity Framework • En tabell per konkrete type • Hver tabell inneholder alle dataene for en entitet type
Ymse • Transaction scope • Default: Hver SaveChanges() er i sin egen transaksjon • Concurrency • Default: last write wins • Stored Procs • Kan knyttes til CRUD-operasjoner i EDM • Men: du mister da muligheten til å kombinere spørringer
Best Practices (Kjekt å vite) • Ikke skriv LINQ overalt i applikasjonen, • Ha eget dataaksess lag • Change tracking trekker mye RAM over tid, derfor: • MergeOption.NoTracking • Per spørring • Per Entity (i en kontekst) • Attach / Detach • Bruk using-statement for konteksten: • using(MyEntities ctx = new ...){ ... }
Best Practices / Kjekt å vite ( ASP.Net ) • Ikke mellomlagre entity – kontekst mellom requester ( f.eks i Session) • Det er fy fy! (minnebruk) • Entities lar seg serialisere til ViewState • For å holde på en referanse: EntityKey
Best Practices / Kjekt å vite (Win apps) • Bruk Detach / Attach når du bytter applikasjonskontekst • Dispose av entity context når du kan
Best Practices / Kjekt å vite (Services) • Entityer fungerer som WCF data kontrakter • Men er kanskje ikke så lurt... • Attach / Detach • Timestamp kolonne er smart ift. konflikter.
Andreas Knudsen Seniorkonsulent +47 98219349 andreas.knudsen@bekk.no