Entity Framework Andreas Knudsen, Bekk Consulting AS 31/
Agenda Side 2 Generelt om Entity Framework Entity Data Model (EDM) Object Services Entity Client Arv Ymse annet Best Practices
Føles det kjent? Side 3
Generelt om Entity Framework Side 4 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 Side 5 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 Side 6 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 Side 7 Det applikasjonen ”har lyst å forholde seg til” –Entity –Relationship En.edmx fil inneholder 3 deler –Konseptuell modell (.CSDL) –Lagringsmodell (.SSDL) –Mappingmodell (.MSL)
Object Services Side 8 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 Side 9 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 Side 10 Vare Id Pris RabattVareAvslagVare Avslag(kr)Rabatt (%)
Arv i Entity Framework Side 11 En tabell per hierarki –Null–verdier der de ikke er relevante –Diskriminator - kolonner
Arv i Entity Framework Side 12 En tabell per type –Hver tabell inneholder ekstra data som trengs i forhold til basetype
Arv i Entity Framework Side 13 En tabell per konkrete type –Hver tabell inneholder alle dataene for en entitet type
Ymse Side 14 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) Side 15 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 ) Side 16 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) Side 17 Bruk Detach / Attach når du bytter applikasjonskontekst Dispose av entity context når du kan
Best Practices / Kjekt å vite (Services) Side 18 Entityer fungerer som WCF data kontrakter –Men er kanskje ikke så lurt... Attach / Detach Timestamp kolonne er smart ift. konflikter.
Spørsmål? Side 19
BEKK CONSULTING AS SKUR 39, VIPPETANGEN. P.O. BOX 134 SENTRUM, 0102 OSLO, NORWAY. Andreas Knudsen Seniorkonsulent