Entity Framework 4.0, en
utvärdering av ett ORMramverk
Entity Framework 4.0, an evaluation of
an ORM-framework
Akademin
industri och
samhälle
Andreas Hall
Daniel Hindrikes
Nr: IKA052010
EXAMENSARBETE, Grundnivå 2 i
Informatik
Ämne
Reg nr
Omfattning
Informatik, Grundnivå 2
IKA052010
15 hp
Namn
Månad/År
Andreas Hall
Daniel Hindrikes
Juni 2010
Handledare:
Pär Eriksson
Examinator:
Mark Dougherty
Företag/Institution
Handledare vid företaget/institutionen
Sogeti Sverige AB
Martin Olsén
Titel
Entity Framework 4.0, en utvärdering av ett ORM-ramverk
Nyckelord
Entity framework, ORM-ramverk, object-relational mismatch, objektorientering, relationsdatabaser,
Visual studio
Sammanfattning
När man kombinerar ett objektorienterat programmeringsspråk och en relationsdatabas uppstår en
del problem för utvecklare eftersom objektorienterade programmeringsspråk och relationsdatabaser
har olika fokus, objektorienterade programmeringsspråk fokuserar på att avbilda verkliga objekt och
relationsdatabaser fokuserar på data. De problem som uppstår kallas med ett samlingsnamn för
object-relational mismatch. Det finns flertalet ramverk för att hantera dessa problem. Ett av dem är
Entity Framework.
Syftet med detta projekt var att utvärdera hur utvecklare tycker att Entity Framework fungerar för
att lösa problematiken runt object-relational mismatch, hur det är för utvecklare att lära sig använda
Entity Framework samt hur tillgången på inlärningsmaterial är.
Under vår studie har vi lärt oss använda Entity Framework samtidigt som vi gjort en studie av
tillgången på inlärningsmaterial. Vi har också byggt om en applikation så att den använder Entity
Högskolan Dalarna
Röda vägen 3
781 88 BORLÄNGE
Telefon:
Telefax:
URL:
023-77 80 00
023-77 80 50
http://www.du.se/
Framework. Vi har jämfört den ombyggda applikationen med den gamla applikationen för att kunna
se vilken skillnad som Entity Framework bidrog till.
Vi kom fram till att Entity Framework hanterar object-relational mismatch på ett bra sätt som bland
annat gör att utvecklingsprocessen kortas ner då inte lika mycket kod behöver skrivas. Utvecklare
med tidigare kunskaper i .NET-programmering upplever att det är lätt att lära sig Entity Framework.
Att det upplevs lätt att lära sig Entity Framework hänger förmodligen ihop med att tillgången på
inlärningsmaterial är god.
Högskolan Dalarna
Röda vägen 3
781 88 BORLÄNGE
Telefon:
Telefax:
URL:
023-77 80 00
023-77 80 50
http://www.du.se/
DEGREE PROJECT,
Undergraduate level 2 in
Informatics
Subject
Reg number
Extent
Informatics, Undergraduate level 2
IKA052010
Month/Year
June 2010
15 ects
Names
Andreas Hall
Daniel Hindrikes
Supervisor:
Pär Eriksson
Examiner:
Mark Dougherty
Company/Department
Supervisor at the Company/Department
Sogeti Sverige AB
Martin Olsén
Title
Entity Framework 4.0, an evaluation of an ORM-framework
Keywords
Entity Framework, object oriented, object-relational mismatch, relational databases, ORM-framework,
visual studio
Summary
When you combine an object-oriented programming language and a relational database some
problems occur for developers because object-oriented programming languages and relational
databases have different focus, object-oriented programming focuses on the imaging of real objects
and relational databases focusing on data. The problem that arises is called object-relational
mismatch. There are several frameworks for dealing with these problems. One of them is the Entity
Framework.
The purpose of this study was to evaluate how developers think the Entity Framework works to solve
the problems around the object-relational mismatch and how easy it is for developers to learn to use
the Entity Framework as well as the availability of learning materials.
In our study, we have learned to use Entity Framework while we carried out a study on the
availability of learning materials. We have also rebuilt an application to use the Entity Framework.
Högskolan Dalarna
Röda vägen 3
781 88 BORLÄNGE
Telefon:
Telefax:
URL:
023-77 80 00
023-77 80 50
http://www.du.se/
We have compared the application against the old application to be able to see what differences the
Entity Framework did make.
We concluded that the Entity Framework handles object-relational mismatch in a good way for
instance makes the development process shorter then you don’t need to write as much code as you
will need to without the Entity Framework. Developers that already have knowledge of .NET
programming finds it easy to learn the Entity Framework. That it is seen easy to learn the Entity
Framework is probably linked to the availability of learning materials is good.
Högskolan Dalarna
Röda vägen 3
781 88 BORLÄNGE
Telefon:
Telefax:
URL:
023-77 80 00
023-77 80 50
http://www.du.se/
Innehållsförteckning
1 Inledning ............................................................................................................................................... 1
1.1 Bakgrund ....................................................................................................................................... 1
1.1.1 Uppdragsgivare ...................................................................................................................... 2
1.1.2 Uppdragsbeskrivning .............................................................................................................. 2
1.2 Frågeställning ................................................................................................................................ 2
1.2.1 Underlättar användandet av Entity Framework 4.0 och Visual Studio 2010 det för
systemutvecklare? ........................................................................................................................... 2
1.2.2 Hur upplevs Entity Framework att lära sig och hur är tillgången på inlärningsmaterial? ...... 2
1.3 Syfte .............................................................................................................................................. 3
1.4 Avgränsning ................................................................................................................................... 3
1.5 Klargörande av begreppet systemutvecklare/utvecklare ............................................................. 3
2 Metod ................................................................................................................................................... 4
2.1 Metodik ......................................................................................................................................... 4
2.1.1 Ontologi och epistemologi ..................................................................................................... 4
2.1.2 Rapportens kunskapsformer .................................................................................................. 4
2.1.3 Studiens olika faser................................................................................................................. 4
2.2 Tillvägagångssätt ........................................................................................................................... 5
2.2.1 Litteraturstudie ORM ............................................................................................................. 5
2.2.2 Inlärning och studie av tillgång på inlärningsmaterial............................................................ 5
2.2.3 Fallstudie ................................................................................................................................ 5
2.3 Sammanställning av resultat ......................................................................................................... 6
3 Centrala begrepp .................................................................................................................................. 7
3.1 Objektorientering .......................................................................................................................... 7
3.1.1 Begrepp inom objektorienterad programmering .................................................................. 7
3.1.2 Arv och polymorfism .............................................................................................................. 8
3.2 Databaser ...................................................................................................................................... 8
3.2.1 Relationsdatabaser ................................................................................................................. 9
3.2.2 SQL .......................................................................................................................................... 9
4 Object-Relational Mapping (ORM) ..................................................................................................... 10
4.1 ORM-ramverk .............................................................................................................................. 10
4.1.1 Entity Framework ................................................................................................................. 11
5 Implementation av ORM-ramverk ..................................................................................................... 14
5.1 Lösning i den gamla applikationen.............................................................................................. 14
5.2 Entity Framework 4.0 i Visual Studio 2010 ................................................................................. 14
5.2.1 Generera modeller ............................................................................................................... 15
5.2.2 Punktnotation....................................................................................................................... 15
5.2.3 Spara, uppdatera, radera och hämta data ........................................................................... 16
5.2.4 Mindre kod i den nya applikationen .................................................................................... 16
5.3 Att lära sig Entity Framework 4.0 ................................................................................................ 17
5.3.1 Microsofts egen webbplats .................................................................................................. 17
5.3.2 Övriga webbplatser .............................................................................................................. 17
5.3.3 Böcker ................................................................................................................................... 17
6 Analys av Entity Framework 4.0 ......................................................................................................... 18
6.1 Använda Entity Framework......................................................................................................... 18
6.2 Inlärning av Entity Framework .................................................................................................... 19
7 Slutsatser ............................................................................................................................................ 21
8 Författarnas reflektioner .................................................................................................................... 22
8.1 Rapportens relevans ................................................................................................................... 22
8.2 Resultatets kvalité ....................................................................................................................... 22
8.3 Förslag till vidare studier ............................................................................................................. 23
9 Referenser/Källförteckning ................................................................................................................ 24
9.1 Litteratur ..................................................................................................................................... 24
9.2 Elektroniska källor ....................................................................................................................... 24
9.3 Personer ...................................................................................................................................... 25
Figurförteckning
Figur 3-1: Begreppsgraf över objektorientering ...................................................................................... 8
Figur 3-2: En del av golfapplikationens datamodell. ............................................................................... 9
Figur 4-1: Begreppsgraf ORM ................................................................................................................ 11
Figur 4-2: Entity Framework architecture, Yemelyanov A (2008) ......................................................... 12
Figur 4-3: Exempel på Entity SQL .......................................................................................................... 13
Figur 4-4: Exempel på LINQ to entities .................................................................................................. 13
Figur 5-1: En del av den genererade entitetsdatamodellen ................................................................. 15
1 Inledning
I inledningskapitlet kommer vi att beskriva bakgrund, information kring uppdragsgivare,
information gällande uppdraget, vårt vetenskapliga syfte samt vilken avgränsning och vilka
frågeställningar vi har.
1.1 Bakgrund
Den mest utbredda och populäraste tekniken för att lagra data i databaser är såkallade
relationsdatabaser. Samtidigt är objektorienterade programmeringsspråk väldigt populära
bland
systemutvecklare.
I
många
applikationer
används
ett
objektorienterat
programmeringsspråk samtidigt som man lagrar data i en relationsdatabas.
Eftersom
objektorienterade
programmeringsspråk
och
relationsdatabaser
har
olika
fokuseringar uppstår problemet att de passar dåligt ihop. Relationsdatabaser har data i fokus
(se 3.2), medan objektorienterade språk fokuserar på att avbilda verkliga objekt (se 3.1).
Därmed måste objekt mappas mot tabeller i databasen. (Ireland, Bowers, Newton, Waugh
2009) Varchar måste översättas till string, integer till int och så vidare (Neward 2006). Det gör
att det behöver skrivas väldigt mycket kod. Under 90-talet kunde enligt Pettersson (2009) 2030%
av
utvecklingstiden
gå
till
att
lösa
glappen
mellan
objektorienterade
programmeringsspråk och relationsdatabaser. Han skriver också att ett decennium senare ska
den siffran ha ökat till 30-40%.
Object-Relational Mapping eller Object Relational Model (ORM) är en programmeringsteknik
för
att
konvertera
data
mellan
de
oförenliga
systemen
relationsdatabaser
och
objektorienterade programmeringsspråk (Ubaid,Atique, Begun 2009). Det problemet brukar
benämnas object-relational mismatch eller objekt-relationsproblemet på svenska, men i denna
rapport kommer vi använda det engelska begreppet då det är ett vedertaget begrepp. I
artikeln ”A classification of object-relational impedance mismatch” av Ireland, Bowers, Newton
och Waugh från 2009 nämns det Hibernate och Oracle TopLink som exempel på ramverk för
ORM. ORM beskrivs mer ingående i kapitel 4.
Microsoft Corporation har också ett ramverk för att hantera ORM. Detta ramverk kallar de för
Entity Framework. Microsoft beskriver Entity Framework som ett ramverk för att undvika
problemen som uppstår mellan datamodeller och programmeringsspråk (MSDN 2007), det vill
säga ett ramverk för att hantera object-relational mismatch.
1
1.1.1 Uppdragsgivare
Sogeti Sverige AB är ett stort IT-konsultföretag som ingår i Cap Geminikoncernen. Sogeti har
ungefär 20 000 anställda i 15 länder varav ungefär 1 000 är positionerade i Sverige.
Moderbolaget Cap Gemini bildade år 2002 ett dotterbolag med namnet Sogeti som existerar i
sex olika länder. År 2003 bildades Sogeti Sverige AB där deras fokus ligger på den växande
lokala IT-marknaden. Sogeti fokuserar på att ha ett nära och långvarigt samarbete med
kunden. (Sogeti.se)
1.1.2 Uppdragsbeskrivning
Sogeti vill ha en utvärdering av Entity Framework 4.0 som kom med .NET Framework 4.0. .NET
Framework 4.0 är det nyaste .NET-ramverket från Microsoft Corporation. Målet med
utvärderingen är att Sogeti vill veta om de ska börja använda Entity Framework i applikationer
som de utvecklar.
Sogeti vill även ha en uppgradering av en applikation som de använder för att administrera
golftävlingar som anordnas inom företaget och med kunder. Denna applikation som idag
bygger på deras egenutvecklade Sogeti .NET Pattern som är baserad på COM+, vill de ha
uppgraderad till Entity Framework 4.0.
1.2 Frågeställning
Utifrån bakgrunden och syftet har vi formulerat den frågeställning som presenteras nedan.
1.2.1 Underlättar användandet av Entity Framework 4.0 och Visual Studio 2010 det
för systemutvecklare?
Tanken med ett ORM-ramverk som Entity Framework är att det ska underlätta vid
utvecklandet av applikationer genom att det hanterar object-relational mismatch, som uppstår
vid användning av objektorienterat programmeringsspråk och relationsdatabaser. Vi vill med
denna frågeställning veta om Entity Framework 4.0 och Visual Studio 2010 underlättar för
systemutvecklare så att det inte behövs skrivas lika mycket kod för att mappa tabeller mot
objekt.
1.2.2 Hur upplevs Entity Framework att lära sig och hur är tillgången på
inlärningsmaterial?
Om ett ORM-ramverk upplevs svårt att lära sig och är dåligt dokumenterat, kommer
systemutvecklare få svårt att börja använda det. Därför vill vi ta reda på hur systemutvecklare
med befintliga kunskaper i .NET programmering upplever det att lära sig Entity Framework och
om det finns bra material tillgängligt för inlärning.
2
1.3 Syfte
Eftersom det kan behövas skriva väldigt mycket för att komma förbi glappet mellan
objektorienterade programmeringsspråk och relationsdatabaser är det viktigt att använda ett
bra ORM-ramverk för att hantera problemet. Därför är vårt syfte med detta projekt att
undersöka om Entity Framework 4.0 är ett ramverk som hanterar object-relational mismatch
så att det bidrar till att det inte behöver skrivas lika mycket kod för mappning av tabeller mot
objekt. Vidare kommer vi att undersöka hur tillgången på material för inlärning av Entity
Framework är och hur systemutvecklare upplever det att lära sig Entity Framework.
1.4 Avgränsning
Vi kommer endast att undersöka om Entity Framework underlättar för systemutvecklare att
hantera object-relational mismatch-problematiken och hur tillgången på inlärningsmaterial är
för att kunna bedöma om vi tycker att Entity Framework är något som systemutvecklare bör
använda sig av. Vi har valt att avgränsa oss till just Entity Framework för att det är nytt och
därmed intressant att ta reda på hur detta specifika ramverk hanterar problematiken.
Intressant just för att företaget Microsoft Corporation är skaparna av ramverket och många
använder deras övriga produkter.
1.5 Klargörande av begreppet systemutvecklare/utvecklare
När vi använder begreppen systemutvecklare/utvecklare menar vi personer som har ett yrke i
form av programmerare eller av personer som praktiskt kan komma att stöta på objectrelational mismatch och kan ha nytta av att använda sig av ett ORM-ramverk som Entity
Framework. Eftersom Entity Framework är ett ORM-ramverk för att hantera object-relational
mismatch under utvecklingen av .NET-applikationer vänder sig rapporten i första hand till
systemutvecklare som utvecklar applikationer för .NET-plattformen.
3
2 Metod
I detta kapitel klargör vi vår kunskapssyn, beskriver vilken typ av kunskap rapporten bidrar med
och beskriver de faser som vår studie har haft.
2.1 Metodik
Här kommer en presentation på de metoder som vi använt under vår studie, vilken
kunskapssyn vi har och vad rapporten bidrar med.
2.1.1 Ontologi och epistemologi
Vi ser på kunskap på det sättet att den ska vara till nytta för praktiker och inte bara för de som
forskar inom ämnet informatik. Vår rapport riktar sig i första hand till praktiker.
2.1.2 Rapportens kunskapsformer
Rapporten bidrar med normativ kunskap. Vilket innebär att den bidrar med vägledande
kunskap. Rapportens kunskapsbidrag är normativt i det avseendet att den kan hjälpa
utvecklare i valet om Entity Framework ska användas eller inte.
2.1.3 Studiens olika faser
Studien delas in i tre olika faser, en fas med teoristudier, en med inlärning och studie av
tillgången på inlärningsmaterial och en fallstudie av Entity Framework.
Teoristudier
Under den första fasen kommer vi att läsa in oss på problematiken med Object-Relational
Mapping för att en klar bild av vad det innebär för att kunna göra en utvärdering av Entity
Framework som är ett ORM-ramverk.
Inlärning och studie av tillgång på inlärningsmaterial
Under denna fas kommer vi att lära oss att använda Entity Framework. Vi kommer även att
göra en studie av tillgången på material som man kan använda vid inlärandet av Entity
Framework. Det känns naturligt att vi genomför dessa två faser tillsammans, då vi ändå
kommer att behöva söka efter material för att lära oss Entity Framework.
Fallstudie
Under denna fas har vi gjort en fallstudie på Entity Framework 4.0. Med en fallstudie menas att
man undersöker något specifikt i sin realistiska miljö (Backman 1998). I vårt fall gör vi en
undersökande fallstudie som kan ha vissa beskrivande infall. Att vi valt att göra en fallstudie
beror på att vi tycker att det är det bästa sättet för oss att få en bra bild om hur Entity
Framework upplevs vara att utveckla en applikation med.
4
2.2 Tillvägagångssätt
Här kommer en utförlig genomgång av tillvägagångssättet under studien.
2.2.1 Litteraturstudie ORM
Under litteraturstudien har vi använt oss av artikelsökmotorn Elin, som är en sökmotor för
vetenskapliga artiklar. Att vi valt att använda oss av Elin beror på att vi i första hand ville
använda oss av vetenskapliga artiklar då det ger mer tyngd åt rapporten och att det är den
artikelsökmotor som vi har tillgång till via Högskolan Dalarna. Vi har även använt oss av andra
artiklar som publicerats på webben.
2.2.2 Inlärning och studie av tillgång på inlärningsmaterial
Inlärningen och studien med tillgången på inlärningsmaterial för Entity Framework har gått
hand i hand. Det blev naturligt att det blev så då vi själva behövde material för att lära oss
Entity Framework.
Första steget i denna process var att ta reda på vilka böcker som fanns utgivna om ämnet. För
att göra det tittade vi på de största webbplatserna för att köpa böcker online plus att vi
använde Googles sökmotor för att söka efter böcker. Anledningen till att vi använde Googles
sökmotor är att vi är vana att använda den och känner därför att vi når bäst resultat med hjälp
av den.
Vi använde sedan Google för att hitta annat material som kan hjälpa till med inlärning av Entity
Framework. Vi sökte också på Microsofts webbplats eftersom det är de som ligger bakom
Entity Framework.
2.2.3 Fallstudie
Under fas tre har vi att genomföra en fallstudie av Entity Framework där vi byggde om en
befintlig applikation till att använda sig av Entity Framework. Den nya applikationen använder
samma databas som den gamla. Det programmeringsspråk som vi har använt oss av är det
objektorienterade språket C# som är en del av .NET-plattformen. Vi har även att titta på om
det finns några speciella krav på hur en databas ska vara designad för att det ska fungera på ett
bra sätt att använda Entity Framework.
Det första steget i denna fallstudie var att analysera den befintliga applikationen, dels för att
veta hur vi skulle bygga upp den nya, men också för att kunna se vilka skillnader som
implementationen av Entity Framework leder till.
5
När vi sedan började utveckla den nya applikationen utgick vi från den befintliga och skapade
samma metoder i den nya.
Vi gjorde även en kort intervju med en nyanställd person (se bilaga 1) på Sogeti för att få hans
bild av Sogeti .NET Pattern som den gamla applikationen byggde på. Det för att få fler
reflektioner än våra egna och därmed ett mer trovärdigt resultat.
Vi provade också att generera en databas utifrån en modell som vi skapat i Visual Studio då vi
tyckte att vi behövde göra det för att kunna utvärdera Entity Framework på ett bra sätt.
Förutom den intervju vi gjorde om Sogeti .NET Pattern har vi endast använt våra egen
observationer och upplevelser när vi utvärderat Entity Framework, detta då vi inte har
möjligheten att ta del av andras observationer och upplevelser. Hade man haft möjligheten
hade man kunnat låta ett flertal personer använda Entity Framework i ett projekt och sedan
föra intervjuer med dem om deras upplevelser med Entity Framework. Vi anser dock att vi
genomfört en trovärdig utvärdering ändå, eftersom vi ser oss själva som systemutvecklare
även om det såklart hade varit bättre att kunna ta del av fler personers reflektioner.
När vi jämförde den gamla applikationen med den nya tittade vi på den kod som skrivits. Vi
jämförde antalet kodfiler, kodrader och metoder för att kunna se vad skillnaden blivit med
Entity Framework. Detta för att kunna se om användandet av Entity Framework bidrog till att
mindre kod behövde skrivas eller inte för att hantera Object-Relational Mismatch.
2.3 Sammanställning av resultat
Resultatet av vår fallstudie presenteras i kapitel 5 i textform där vi går igenom hur utvecklare
upplever att arbeta med Entity Framework 4.0 i Visual Studio 2010, hur svårt det upplevs att
lära sig Entity Framework 4.0 samt tillgången på inlärningsmaterial.
I kapitel 6 presenterare vi resultatet av utvärderingsfasen i textform och i kapitel 7 redovisar vi
våra slutsatser.
6
3 Centrala begrepp
För att öka förståelsen för det som skrivs i rapporten, kommer här en presentation av de mest
centrala begreppen i rapporten.
3.1 Objektorientering
Överallt i det verkliga livet ser vi objekt, det kan vara personer, bilar, bord, stolar och så vidare.
Människan har en förmåga att tänka i objekt. När man skapade objektorienterade
programmeringsspråk som exempelvis Java och C# (C Sharp) överförde man det tankesättet till
programmeringen. (Deitel, Deitel, 2007)
3.1.1 Begrepp inom objektorienterad programmering
Nedan beskrivs några av de grundläggande begreppen inom objektorienterad programmering.
Objekt
Ett objekt har ett tillstånd, ett beteende och en unik identitet. Med tillstånd menas de statiska
och dynamiska egenskaper som ett objekt har. Med beteende menas att ett objekt både kan
reagera på handlingar samt utföra handlingar. Ett objekts identitet är det som skiljer det från
andra objekt. (Halilovic, 2006)
Klasser
En klass anger en beskrivning för antal objekt. Klassen beskriver de egenskaper och beteenden
som ett objekt av en klass har. Alla objekt hör till en klass. Inom objektorienterad
programmering är klassbegreppet fundamentalt, utan det kan man inte bedriva
objektorienterad programmering. (Halilovic, 2006)
Gränssnitt
Inom objektorienterad programmering är det olika objekt som kommunicerar med varandra
genom att objekten skickar meddelanden till varandra. Man säger att objekten använder ett
annat objekts metod. Gränssnittet beskriver vilka metoder som objektet har. (Halilovic, 2006)
7
Verkligheten
Moddelerar
Egenskaper
Har
Objekt
Beskriver
Klass
Kommunicerar via
Gränssnitt
Består av metoder
Metoder
Figur 3-1: Begreppsgraf över objektorientering
3.1.2 Arv och polymorfism
Idén bakom arv är simpel men väldigt användbar. Tanken är att om du vill skapa en ny klass
men redan har en klass som innehåller en del av den kod som du vill använda i den nya
klassen. Då kan du låta den nya klassen ärva från den gamla klassen (basklass). Den nya klassen
får då tillgång till den gamla klassens metoder och egenskaper. (The Java Tutorials)
Ordet polymorfism kommer från biologin där en organism kan ha flera olika former eller faser.
Det kan också appliceras på objektorienterade programmeringsspråk. Det genom att man kan
skriva om metoder som finns i en basklass till att ha ett beteende som passar bättre för den
berörda klassen. (The Java Tutorials)
3.2 Databaser
Databaser består av data där data är organiserad i form av rader som beskriver ett fysiskt eller
konceptuellt objekt. Relaterade databasrader är grupperade tillsammans i tabeller. (King,
Konrad & Jamsa, Kris A., 2002) För att förtydliga detta kommer här ett kortare exempel. Om
man exempelvis har en tabell som beskriver medlemmar innehåller denna tabell flera
dataelement eller attribut som exempelvis användarnamn, förnamn, efternamn, adress och
postnummer som unikt representerar en person som är medlem. Detta betyder då att tabellen
medlemmar innehåller många unika medlemmar som är personer i verkligheten.
8
3.2.1 Relationsdatabaser
En relationsdatabas är en databas där tabeller är relaterade till varandra genom att relationen
använder gemensamma kolumner innehållandes datavärden. Denna koppling mellan
datavärden i olika tabeller representerar förälder/barn relationer i form av pekare för att
etablera sig. (King, Konrad & Jamsa, Kris A., 2002)
Här följer ett exempel för att förtydliga bilden av hur det kan se ut när tabeller är relaterade
mellan varandra med gemensamma kolumner. Som vi kan se i figuren nedan innehåller
tabellerna Spelare, Deltagare, Tavlingar och Golfbanor varsin kolumn vilket unikt representerar
en rad i respektive tabell. Till exempel är kolumnen id i tabellen Golfbanor ett nyckelvärde som
markerats med symbolen # i figuren nedan vilket återfinns i tabellen Tavlingar som
kolumnnamn Golfbanaid markerat med symbolen (#). Detta symboliserar en relation mellan
tabellerna Golfbanor och Tavlingar i form av pekare.
Deltagare
# Id
(#)TavlingsId
(#)SpelareId
* Extraslag
Spelare
# Id
*Namn
*Klubb
*Hcp
Tavlingar
# Id
(#) GolfbanaId
*Namn
*Datum
*Spelform
*UtslagsTeeMan
*UtslagsTeeKvinna
Golfbanor
# Id
*Namn
*Klubb
Figur 3-2: En del av golfapplikationens datamodell.
3.2.2 SQL
SQL står för Structured Query Language och är ett standardiserat språk som används i
samband med databaser. SQL har tre huvudsakliga roller vilket är skapande av en databas och
definiera dess struktur, ställa frågor mot databasen för att få tillgång till det data som är svaret
utifrån din fråga samt att kontrollera databassäkerhet. (Wilton, Paul & Colby, John, 2005)
9
4 Object-Relational Mapping (ORM)
I ett objektorienterat programmeringsspråk ligger fokus på objekt som ska representera
verkliga objekt (se 3.1) till skillnad från relationsdatabaser vilket har data i fokus (se 3.2). Det är
populärt att använda ett objektorienterat programmeringsspråk samtidigt som data lagras i en
relationsdatabas (Ireland, Bowers, Newton, Waugh 2009).
Att fokus hos de två teknikerna skiljer sig skapar ett problem hos dem som vill använda sig av
ett objektorienterat programmeringsspråk tillsammans med en relationsdatabas. Tabellerna i
databasen måste då mappas till objekt (Ireland, Bowers, Newton, Waugh 2009). Då
relationsdatabaser och objektorienterade programmeringsspråk använder olika datatyper
måste de översättas, tillexempel varchar till string, integer till int och så vidare (Neward 2006).
När denna mappning ska genomföras riskerar man att behöva få skriva väldigt mycket kod för
att komma över glappet mellan de båda teknikerna. (Pettersson 2009) Glappet mellan ett
objektorienterat programmeringsspråk kallas för object-reational mismatch.
Ett exempel på skillnaden att hantera data i ett objektorienterat programmeringsspråk är om
man har användare och användargrupper. I en relationsdatabas har man tre olika tabeller för
detta. En som lagrar information om användaren, en som lagrar information om gruppen och
en kopplingstabell som talar om vilka användare som är med i vilken grupp. Om man ska
modellera samma sak på ett objektorienterat sätt hade man skapat en klass för användare och
en för grupper. En instans av ett gruppobjekt hade sedan innehållit referenser till alla objekt
som tillhör de användare som är med i gruppen.
I ett objektorienterat programmeringsspråk kan man använda sig utav arv och polymorfism (se
3.1.2), detta är något som man inte har stöd för i relationsdatabaser (Neward 2006).
4.1 ORM-ramverk
För att hantera object-relational mismatch under applikationsutveckling finns det ett flertal
ramverk för att hantera det. Ireland, Bowers, Newton, Waugh nämner Oracle TopLink och
Hibernate som exempel på ORM-ramverk. Pettersson (2009) tar upp Microsoft ADO.NET Entity
Framework som ett ORM-ramverk, vilket endast benämns som Entity Framework i denna
rapport och är det ramverk som vi riktar in oss på.
Det som ORM-ramverket har som syfte är att vara en metod för modellering och
frågeställningar mot ett informationssystem på den konceptuella nivån.
Eftersom
informationssystem i vanliga fall är implementerat på ett databassystem som är baserad på en
logisk datamodell som exempelvis grundas på relationer eller i form av objektrelationer, gör
10
ORM-ramverk det möjligt att mappa mellan de konceptuella och logiska nivåerna. (Halpin
2006)
Halpin (2006) beskriver att ORM kallas som det gör för att ramverket avbildar världen i termer
av objekt (entiteter eller värden) som spelar roll (delar i relationer).
Fördelarna som blir med att använda sig utav ett ORM-ramverk enligt Halpin (2006) är för det
första att ORM-modeller och frågor är mer stabila genom att attribut kan utvecklas till
entiteter eller relationer. För det andra kan ORM-modeller fyllas med flera instanser och för
det tredje är ORM mer enhetligt. Med enhetligt menas att man inte behöver en separat
notering för att tillämpa samma hinder för ett attribut snarare än en relation.
Objektorienterade
programmeringsspråk
Kopplar ihop
ORM-ramverk
Skapar en
Konceptuell nivå
Av
Objekt
Relationsdatabaser
Figur 4-1: Begreppsgraf ORM
4.1.1 Entity Framework
Entity Framework är som tidigare nämnt ett ORM-ramverk som är utvecklat och framtaget av
Microsoft för .NET-plattformen. Ubaid, Atique, Begun (2009) tycker dock att det inte är helt
korrekt att klassificera Entity Framework som endast ett ORM-ramverk då Entity Framework är
mycket mer avancerat än så. Ubaid, Atique, Begun (2009) skriver att Entity Framework strävar
efter något betydligt mer sofistikerat till skillnad från vanliga ORM verktyg då Entity
Framework skapar den konceptuella modellen som något konkret.
Modellen kan genereras från en befintlig databas eller genom att man skapar modellen först
och generar en databas utifrån entitetsdatamodellen (MSDN Channel 9).
Detta åstadkommer Entity Framework genom att tillhandahålla ett ramverk för att skapa upp
en abstrakt modell ovanpå relationsdatabasen för att komma över problemet gällande objectrelational mismatch. Kärnan i Entity Framework är dess olika lager av abstraktion vilket är
uppdelat enligt konceptuella, mappade och logiska skikt som ingår i Entitetsmodellen. (Ubaid,
Atique, Begun, 2009)
Entity Framework använder sig dessutom av två API:er, object services och entity client för att
kunna arbeta med entitetsdatamodellen samt användning av två konstruktorer för
11
datamanipulation. De som används är Entity SQL (ESQL) och LINQ to Entitites. Ubaid, Atique,
Begun (2009)
Entity Framework
Entity SQL
ObjectServices
LINQ to Entities
Entity Client
Entity Framework Metadata Layers
Conceptual
Entity Data Model
Entity-to-Relation
mapping specification
Mapping
Relational database
model
Logical
Datasource
Figur 4-2: Entity Framework architecture, Yemelyanov A (2008)
Entity Client
Entity Client är en dataaccessleverantör för Entity Framework även kallat mapping provider.
Det som Entity Client gör är att den kapslar in och hanterar databas- och
entitetsdatamodellanslutningar och liknar den vanliga SQL Client i ADO.NET som tillåter
applikationer att ansluta till relationella datakällor. Till skillnad från SQL Client ger Entity Client
tillgång till data inom entitetsdatamodellens villkor. (Yemelyanov, 2008)
Object Services
Detta är ett verktyg inom Entity Framework som genererar ett domänobjektslager för
användning i applikationen. Genom att man använder Object Services är det möjligt att ställa
frågor mot entitetsdatamodellen med hjälp av Entity SQL eller LINQ. (Yemelyanov, 2008)
Entity SQL
Frågespråket Entity SQL är ett frågespråk skapat för entitetsdatamodellen i Entity Framework.
Entity SQL går att dra liknelse med traditionell SQL för databaser som utvecklare som använt
12
det tidigare känner igen sig i. Det Entity SQL bidrar med är att ge Entity Framework dynamisk
frågekapacitet där frågor formuleras statiskt exempelvis under designtillfället. (MSDN 2010)
Nedan följer ett litet exempel på hur en Entity SQL fråga kan se ut:
Figur 4-3: Exempel på Entity SQL
LINQ
Language-Integrated Query (LINQ) är ett frågespråk som används för att ställa frågor mot olika
datakällor som tillexempel datastrukturer i minnet, XML-dokument och även genom ADO.NET
mot databaser, entitetsdatamodeller och dataset. Några av dessa använder sig av olika
implementationer, vilket är dolt, men alla använder sig av samma syntax och
språkkonstruktioner. (MSDN 2010) Nedan följer ett exempel på hur en LINQ-fråga ser ut när
den ställs mot en entitetsdatamodell.
Figur 4-4: Exempel på LINQ to entities
13
5 Implementation av ORM-ramverk
Detta kapitel beskriver vad undersökningen har visat med implementationen av Entity
Framework samt en presentation av material som finns tillgängligt för att kunna få kunskap om
att jobba med ramverket.
5.1 Lösning i den gamla applikationen
I den gamla applikationen hanteras object-relational mismatch med hjälp av Sogetis
egenutvecklade designmönster Sogeti .NET Pattern. Detta ramverk läser in data som finns i
databasen och lägger den i dataset. Denna lösning innehåller många olika lager. De nedersta
lagren som hanterar den direkta kopplingen mot databasen får man genom att lägga till dllfiler till det aktuella projektet. All kommunikation med databasen sker via lagrade procedurer.
Det gör att utvecklaren inte behöver skriva någon kod själv för att hantera kopplingen med
databasen då detta redan är gjort.
När man vill spara eller uppdatera data skickar man data i dataset. Detta sker genom att man
använder en metod i ett objekt för att lägga till data. Dataseten skickas sedan tillsammans med
ett antal parametrar som talar om vad man vill göra med datasetet till det nedre lagret som
sköter databaskopplingen.
För att ta reda på vad de anställda på Sogeti tycker om .NET Pattern pratade vi med KarlHenrik Nilsson som nyligen har blivit anställd på Sogeti och därmed nyligen kommit i kontakt
med .NET Pattern. Hans kommentar om Sogeti .NET Pattern var att det är bra om man
jämförde det med att inte använda något ramverk överhuvudtaget för att hantera objectrelational mismatch. Däremot tyckte han att det var krångligt att lära sig det och att det tog
ungefär en vecka för honom att sätta sig in i det. Han tyckte också att det kändes krångligt att
använda om man jämförde med Entity Framework.
Det vi upplevt då vi själva har tittat på den gamla applikationen är att .NET Pattern känns rörigt
och krångligt att sätta sig in i och att det är väldigt mycket kod som är skriven.
5.2 Entity Framework 4.0 i Visual Studio 2010
Visual Studio är den utvecklingsmiljö som används för utveckling av .NET applikationer med
Entity Framework. Här beskrivs det vi upplevt under applikationsutvecklingen med Entity
Framework i Visual Studio.
14
5.2.1 Generera modeller
Som beskrivs i kapitel 4.1.1 kan man generera en entitetsdatamodell med Entity Framework i
Visual Studio 2010. Som det beskrivs i det kapitlet kan man både generera en databas utifrån
en färdig modell och generera en modell utifrån en befintlig databas.
Vi har undersökt vad som krävs av en relationsdatabas för att det ska kunna generera en bra
modell. Observationer som vi gjorde var att relationer mellan tabellerna måste vara
definierade med foreign-keys (pekare) för att man ska få relationer mellan objekten på ett sätt
som beskrivs i kapitel 5.2.2 nedan. Vid de tillfällen som vi inte hade tabeller med relationer i
databasen
genererades
det
inte
heller
några
relationer
mellan
entiteterna
i
entitetsdatamodellen, fast de egentligen borde ha haft det.
I entitetsdatamodellen kan man även ändra namn på entiteter om man vill. Detta påverkar
inga namn i databasen utan bara på konceptuell nivå.
Figur 5-1: En del av den genererade entitetsdatamodellen
När man genererar en databas utifrån den modell man skapat i Visual Studio kan man använda
sig av arv mellan entiteterna i modellen.
5.2.2 Punktnotation
Om man har flera tabeller i en databas och vill ha ut data från flera tabeller måste man
använda sig av såkallade join-satser i SQL-frågor om man inte använder sig av ett ORMramverk. Dessa SQL-frågor kan bli ganska stora om man har många relationer.
15
I Entity Framework behöver man inte skriva några join-satser. Det räcker med att man hämtar
huvudobjektet. Utifrån huvudobjektet kan man sedan hämta ut relaterande data. Detta sker
med punktnotation precis som när man hanterar vanliga objekt, man skriver referensen till det
aktuella objektet och sedan namnet på det relaterade objektet och sedan namnet på den
egenskapen man vill hämta.
Ett exempel ur den kod vi har skrivit under utvecklingen av applikationen är när vi har hämtat
ett tävlingsobjekt t och vill ha ut namnet på den golfbana som tävlingen utspelar sig på. Detta
görs genom att skriva t.Golfbana.Namn.
5.2.3 Spara, uppdatera, radera och hämta data
I Entity Framework behöver inte utvecklaren skriva någon SQL-kod för att spara, uppdatera,
radera och hämta data från databasen.
Spara data
När man vill spara data till databasen med Entity Framework skapar man upp ett objekt och
lägger
till
det
till
ett
containerobjekt
som
är
det
objekt
som
representerar
entitetsdatamodellen och anropar en metod för att spara.
Uppdatera data
När man vill uppdatera är det precis samma princip, man ändrar bara de egenskaper hos
objektet man vill förändra och anropar metoden för att spara.
Radera data
För att radera data med Entity Framework krävs det att man har läst in aktuellt objekt som
man vill ta bort för att sedan radera objektet med en radera metod.
Lagrade procedurer
Det finns stöd för att använda sig av proceduranrop om man har sådana eller vill använda sig
av dem ur exempelvis optimeringssynpunkt. Det finns stöd för att använda procedurer till
insert, update och delete.
5.2.4 Mindre kod i den nya applikationen
När vi jämförde den gamla applikationen med den nya och kollade på kodfiler, kodrader och
metoder visade det sig att det inte alls behövde skrivas lika mycket kod när man använde sig av
Entity Framework. Eftersom vi byggde den nya applikationen efter den gamlas metoder har vi
alla de metoder som fanns i koden för den gamla applikationen med i den nya också. Dock
behövde vi inte använda oss av alla när vi använde Entity Framework.
16
5.3 Att lära sig Entity Framework 4.0
Något som påverkar hur man uppfattar enkelheten av att lära sig hantera ett nytt ramverk är
tillgången på dokumentation och material för inlärning. Därför har vi tittat på tillgången på
sådant. Nedan presenteras hur tillgången på media, som kan användas vid inlärningen av
Entity Framework. Exempel på media kan vara både skriven text och video, är.
Det mesta av det materialet som finns tillgängligt är på engelska. Men det finns även en del på
svenska.
5.3.1 Microsofts egen webbplats
Microsoft Developer Network (MSDN) är den portal som Microsoft har till stöd för utvecklare.
Portalen tillhandahåller utvecklare information som exempelvis guider, undersidan channel 9
som används för videoföreläsningar, API:er, community, bloggar, hämtbara filer m.m. Den
största delen av materialet som finns på MSDN är skrivet på engelska, men det finns även en
svensk version av MSDN där det finns visst material på svenska.
Det vi lärde oss bäst av var en video på channel 9 på svenska av Dag König där han gick genom
grunderna i Entity Framework.
5.3.2 Övriga webbplatser
Förutom den ovan nämnda webbplatsen av Microsoft Corporation finns det andra
webbplatser där man kan söka sig fram till via Internet som tillhandahåller mängder med
information om .NET med Entity Framework. Det finns både bloggar, guider och liknande
webbplatser som behandlar Entity Framework.
5.3.3 Böcker
I skrivande stund finns det inga böcker om Entity Framework 4.0. Dock är det på gång med
flertalet böcker som handlar om Entity Framework 4.0. En bok som man får många träffar på
om man söker på Google är ”Programming Entity Framework” skriven av Julie Lerman.
Om den föregående versionen av Entity Framework finns det ett större sortiment av böcker att
få tag på.
17
6 Analys av Entity Framework 4.0
Nedan presenteras vår analys som baseras på det som skrivits i de tidigare kapitlen och utifrån
syftet och frågeställningen.
6.1 Använda Entity Framework
Eftersom det blev mindre kod att skriva när vi använde Entity Framework jämfört med vad det
blev med .NET Pattern och mot vad det blivit om man inte hade använt något ramverk för att
hantera object-relational mismatch problematiken, medför det att problematiken med att det
är tidsödande att komma runt glappet mellan objektorienterade programmeringsspråk och
relationsdatabaser minskar markant.
Att vi inte behövde använda alla de metoder som vi skrivit beror på Entity Frameworks sätt att
hantera relationer mellan objekten (se 5.2.2). Detta anser vi vara ett starkt argument för att
implementera Entity Framework.
Vi tycker också att koden blir mer tydlig och lättläst om man jämför med hur det såg ut i den
applikationen som byggde på Sogeti .NET Pattern. Hade man gjort mappningen helt manuellt
utan att använda ett ORM-ramverk hade man förmodligen kunnat uppnå samma resultat. Men
erfarenheter vi har sedan tidigare säger oss att det hade tagit betydligt längre tid.
Entity Framework känns som något vi saknat alla de gånger vi byggt applikationer och hanterat
mappningen mellan objektorienterade programmeringsspråk och relationsdatabaser manuellt.
Vi har då upplevt den manuella mappningen som väldigt tidsödande, precis som det beskrivits i
flertalet av de artiklar som vi läst.
Den största anledningen till att Entity Framework upplevs så smidigt som det gör, skulle vi vilja
säga beror på att Visual Studio 2010 hanterar det på ett väldigt enkelt sätt. Att man bara med
några knapptryckningar kan skapa upp en entitetsdatamodell utifrån en befintlig databas gör
att det går väldigt snabbt att komma igång med applikationsutvecklingen. Det grafiska
verktyget i Visual Studio som man använder vid skapandet av en ny modell tycker vi också
fungerar på ett smidigt och bra sätt.
Möjligheten att ändra namn i entitetsmodellen gör att även om man har en databas med
otydlig namngivning kan man få en tydlig konceptuell databasmodell att programmera mot.
Bäst resultat av användningen av Entity Framework får man om man väljer att skapa en ny
modell som man genererar en databas utifrån. Detta då man först då kan använda alla
funktioner i Entity Framework. Tillexempel kan man då skapa arv mellan entiteter.
18
Att man kan använda lagrade procedurer för insert, update och delete är något som vi ser som
positivt då man kan skapa procedurer om man tillexempel vill att data ska hanteras på något
sätt innan den sparas i databasen. Det kan ju vara så att man vill använda sig av lagrade
procedurer för att kopplingarna mot databasen ska bli mer optimerade.
Att hantera objekt för att skapa, ändra och ta bort data ur databasen tycker vi bidrar till att
man bibehåller ett objektorienterat arbetssätt mot om man inte skulle använda ett ORMramverk och därmed vore tvungen att skriva SQL-frågor för att göra detta.
6.2 Inlärning av Entity Framework
Inlärningen av Entity Framework var betydligt lättare än vad vi hade förväntat oss, speciellt
efter att vi hade tittat på Sogeti .NET Pattern, som vid första anblicken kändes väldigt svårt och
rörigt. Att en nyanställd på Sogeti som precis börjat arbeta med .NET Pattern har samma
uppfattning som oss tyder på att det är ett krångligt ramverk att lära sig.
Att Entity Framework känns så pass enkelt att lära sig beror förmodligen på tillgången på
inlärningsmaterial som vi upplever som väldigt bra. Med väldigt bra avser vi i det här
avseendet att vi inte upplevt att vi saknat något. Att det både finns tillgång till video och text
tycker vi är bra då olika personer lär sig bäst på olika sätt. De som vill läsa text kan göra det, de
som vill titta på kodexempel kan göra det och de som vill se en videobaserad föreläsning kan
göra det, eller som vi gjorde, att vi kombinerade dessa tre inlärningssätt.
Att det i undersökande stund finns dåligt med böcker som tar upp Entity Framework 4.0 känns
inte som något problem. Anledningen till det är att det finns gott om material tillgängligt på
webben och att det planeras att släppa böcker om Entity Framework.
Inlärningen av Entity Framework gick för oss väldigt fort om man jämför med Sogeti .NET
Pattern, som för den person på Sogeti som vi pratade med tog en vecka att lära sig. För oss tog
det bara några timmar att komma igång och kunna använda Entity Framework. Att börja
använda Entity Framework känns inte som något stort steg då vi redan var vana att
programmera i C# och programmeringstekniken med Entity Framework är väldigt likt det
arbetssätt man har när man jobbar i en ren objektorienterad miljö utan att koppla till en
relationsdatabas.
Att man kan komma åt objekten i entitetsdatamodellen på två olika sätt tycker vi är en styrka
hos Entity Framework. Det finns LINQ för att ställa frågor mot entitetsdatamodellen för de som
inte är vana att använda SQL, men kanske har använt LINQ för att ställa frågor mot tillexempel
19
arrayer eller XML-dokument, vilket betyder att de inte behöver lära sig något nytt för att
komma år objekten.
De som är vana att använda frågespråket SQL och som känner sig bekväma med det kan
använda sig av Entity SQL för att ställa frågor mot entitetsdatamodellen. Här kan man tycka att
en liten del av vitsen med Entity Framework försvinner då man ändå måste använda ett SQLliknande språk. Men man behöver inte alls skriva lika avancerade frågor som man skulle få
göra om man skrev SQL-frågor direkt mot en databas, eftersom man bara behöver hämta ett
objekt och använda dess relationer för att komma åt relaterade data på det sättet som
beskrivs i kapitel 5.2.2.
20
7 Slutsatser
Vi har kommit fram till att användandet av Entity Framework 4.0 i Visual Studio 2010
underlättar för systemutvecklare vid utvecklandet av applikationer som använder sig av .NET
plattformens objektorienterade programmeringsspråk tillsammans med en relationsdatabas.
Detta då Entity Framework hanterar object-relational mismatch på ett sätt som gör att det
underlättar för systemutvecklare. Detta medför att utvecklaren sparar tid då mappningen
mellan det objektorienterade
programmeringsspråket
och relationsdatabasen
sköts
automatiskt av Entity Framework. Därför tycker vi att Entity Framework i Visual Studio 2010 är
lämpligt att använda av systemutvecklare som utvecklar applikationer i något av .NETplattformens objektorienterade programmeringsspråk och lagrar data i en relationsdatabas.
Dock krävs det att databasen är designad med relationer mellan tabeller för att man ska få full
effekt av Entity Framework.
Entity Framework upplevs enkelt att lära sig för systemutvecklare som har kunskaper i något
av programmeringsspråken som kan användas tillsammans med .NET-plattformen, eftersom
det finns mycket inlärningsmaterial att tillgå för Entity Framework på Internet. Att arbetssättet
blir mer objektorienterat är också bidragande att det inte upplevs som något stort steg att
börja använda Entity Framework.
21
8 Författarnas reflektioner
Denna studie har gett oss ord på problem som vi har upplevt när vi har utvecklat applikationer
i tidigare projekt då vi inte har använt oss av ORM-ramverk. Vi har fått förståelse för varför vi
har haft de problemen vi har haft och hur vi ska hantera dem. Vi tror att denna rapport ska
kunna vara till nytta för andra som vill använda sig av Entity Framework.
8.1 Rapportens relevans
Rapporten känns väldigt relevant då object-relational mismatch är något som alla utvecklare
som använder objektorienterade programmeringsspråk och relationsdatabaser kommer i
kontakt med. Att Microsoft nyligen lanserat Entity Framework gör också att vi tycker det är
relevant att undersöka just det ORM-ramverket. Vi upplever också att .NET-plattformen är den
dominerande, åtminstone är den det på Sogeti och känslan är att det är så i hela Sverige.
Frågeställningen tycker vi känns relevant relaterat till syfte och bakgrund eftersom frågorna
ger möjlighet till svar som bidrar till att syftet uppnås.
8.2 Resultatets kvalité
Att vi har använt oss av flera olika källor under vår litteraturstudie av object-relational mapping
bidrar till en högre kvalité på det vi skrivit. Även att vi har använt oss av vetenskapliga artiklar
gör att kvalitén ökar. Det då de är granskade innan de publicerats.
Eftersom vi endast är två personer som undersökt Entity Framework skulle man kunna se det
som en svaghet. Hade vi låtit fler personer utvecklat med Entity Framework hade vi kunnat
jämföra deras upplevelser med våra egna upplevelser och därmed fått ett tyngre resultat. Men
vi anser ändå att vi har fått en bra bild om Entity Framework, då vi har utvecklat applikationer i
flera år både på utbildningen på högskolan, i privata projekt och har erfarenheter av att arbeta
med ett objektorienterat programmeringsspråk och relationsdatabaser. Dock så har vi inte
använt oss av några ORM-ramverk innan denna studie påbörjades. Detta gör att vi inte har haft
någon bild av hur ORM-ramverk är att använda vid utveckling av applikationer.
Det resultat vi kommit fram till angående inlärningen av Entity Framework anser vi vara av hög
kvalitet. Detta då vi befann oss i det stadiet innan vi började inlärningen av Entity Framework
som de som vi riktar rapporten till gör. Nämligen till personer som redan innehar kunskaper i
.NET-plattformens objektorienterad programmering.
22
8.3 Förslag till vidare studier
Då vi endast undersökt Entity Framework ur ett perspektiv som fokuserar på hur det är för
utvecklare att utveckla applikationer med hjälp av Entity Framework har vi utelämnat flera
perspektiv. En sak som man skulle kunna undersöka vidare är hur lösningen att använda Entity
Framework för att hantera object-relational mismatch påverkar prestanda på applikationer.
Man skulle kunna studera hur det ur en prestanda synpunkt skiljer sig mot att inte använda
något ORM-ramverk eller att jämföra mot andra ORM-ramverk.
23
9 Referenser/Källförteckning
9.1 Litteratur
Deitel P.J, Deitel H.M (2007)
Java, How to program, seventh edition. Deitel & Deitel
Backman J (1998)
Rapporter och uppsatser. Studentlitteratur, Lund
Halilovic A (2006)
Ett praktikperspektiv på hantering av mjukvarukomponenter. Linköpings universitet
I. Letovsky S (1999)
Bioinformatics: Databases and Systems. Kluwer Academic publicher group
King K, A. Jamsa, K
SQL Tips and Techniques. Premier Press Inc
Ireland C, Bowers D, Newton M, Waugh K (2009)
A Classification of Object-Relational Impedance Mismatch. The Open University, Milton
Keynes, UK
Ubaid M, Atique N, Begum S (2009)
A pattern for the effective use of object oriented databases.
Pettersson T (2009)
Utvärdering av ADO.NET Entity Framework. KTH Stockholm
Yemelyanov A (2008)
Using ADO.NET Entity Framework in Domain-Driven Design: A Pattern Approach, ISSN: 16514769, Chalmers Universitet Göteborg
Halpin T (2006)
Handbook on Architectures of Information Systems, Springer Berlin Heidelberg
9.2 Elektroniska källor
Microsoft MSDN - 2010-03-30
http://msdn.microsoft.com/en-us/library/aa697427%28VS.80%29.aspx
2010-04-26
http://msdn.microsoft.com/en-us/library/w0x726c2%28v=VS.100%29.aspx
2010-05-05
http://msdn.microsoft.com/library/aa697427%28VS.80%29.aspx#ado.netenfrmovw_topic4
2010-05-24
http://msdn.microsoft.com/en-us/library/aa697427%28VS.80%29.aspx
24
Sogeti - 2010-04-01
http://www.sogeti.se/Om-Sogeti/Historik/
http://www.sogeti.se/Om-Sogeti/Foretagspresentationer/
MSDN Channel 9 - 2010-05-04
http://channel9.msdn.com/posts/johanlindfors/MSDN-TV-Introduktion-till-Entity-Framework/
Neward T (2006) - 2010-05-22
http://blogs.tedneward.com/2006/06/26/The+Vietnam+Of+Computer+Science.aspx
The Java Tutorials – 2010-05-23
http://java.sun.com/docs/books/tutorial/java/IandI/subclasses.html
http://java.sun.com/docs/books/tutorial/java/IandI/polymorphism.html
9.3 Personer
Nilsson, Karl-Henrik – 2010-05-24
IT-konsult, Sogeti Sverige AB
25
Bilaga 1
Den 24/5 – 2010 genomförde vi en intervju med Karl-Henrik Nilsson, IT-konsult på Sogeti
Sverige AB.
Vad tycker du om Sogeti .NET Pattern?
Om man jämför med att skriva allt själv så är det bra. Men om man jämför med det jag sett av
Entity Framework så är det krångligare.
Var det svårt att lära sig att använda Sogeti .NET Pattern?
Det var inte direkt svårt men det tog rätt långt tid.
Hur lång tid tog det?
Det tog ungefär en vecka att lära sig .NET Pattern. Vilket jag tycker är lite för mycket för att
lära sig ett ramverk.
1