Mål med lektionen! Repetera och befästa kunskaperna.

Relevanta dokument
Mål med lektionen! Veta kursmålen. Ha kännedom om några av de grundläggande begreppen.

Förstå grunderna i LINQ. Mål med lektionen!

Introduktion till Entity Framework och LINQ. Källa och läs mer

Arbeta med databas. Översikt. Lektion 1: Arbeta med Entity Data Models. Arbeta med Entity Data Models. LINQ (Language Integrated Query).

Det här dokumentet är till för att ge en översikt över ASP.NET MVC samt hur WCF Services används från.net applikationer.

Language Integrated Query, LINQ, och databaser

Henrik Häggbom Examensarbete Nackademin Våren 2015

Stored procedure i ASP.NET

Stored procedure i ASP.NET

ADO.NET Murach Kapitel 17-20

Asp.net mvc intro PER KVARNBRINK,

Webbtjänster med API er

VAD GÖR DU / VEM ÄR DU?

Webservice & ERP-Integration Rapport

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6

Objektorienterade programmeringsspråk. Objektorienterade språk. Den objekt-orienterade modellen. Jämför med icke-oo

Agenda. Objektorienterad programmering Föreläsning 13

VAD GÖR DU / VEM ÄR DU?

Lab 6: ASP.NET 2.0 Providermodellen

Databasens består av: Tabell Kolumner fält Rader poster (varje post är unik)

Sammanfattning. Applikationen är utvecklad i Microsofts utvecklingsmiljö Visual Studio 2012.

Objektorienterad programmering

KAP 18 SQL SERVER AGENT

Institutionen för Tillämpad fysik och elektronik Stefan Berglund och Per Kvarnbrink. Laboration: Flerskiktade applikationer

Kunskapsbank ICARUS DB

Föreläsning 8 - del 2: Objektorienterad programmering - avancerat

Innehåll MySQL Intro. Allmänt om Lagrade Procedurer Enkel utformning Skapa en lagrad procedur Använda parameter som indata

Objektorienterad Programmering (OOP) Murach s: kap 12-16

Föreläsning 4 Innehåll. Abstrakta datatypen lista. Implementering av listor. Abstrakt datatypen lista. Abstrakt datatyp

Vad är en databas? Exempel på databaser: Databas = Organiserad samling och lagring av information.

Laboration 1 Introduktion till Visual Basic 6.0

Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

Objektorienterad Systemutveckling Period 3

Classes och Interfaces, Objects och References, Initialization

Övningen vill visa på vikten av valet av datastruktur, trots att de ofta erbjuder samma funktionalitet genom sina gränssnitt.

Snabbguide Visma Compact API Copyright Visma Spcs AB

TDDC77 Objektorienterad Programmering

TDDD78 Objektorientering: Lagring och livstid

Copyright 2003, SAS Institute Inc. All rights reserved.

12 juni 2009 Projektplan Webb-baserat bokningssystem för flyg Kurs: Applikationsutveckling för internet, TFE

DDL Kommandon CREATE/DROP Database CREATE /ALTER/DROP Table ALTER/ADD/DROP Column CREATE /ALTER/DROP Index

CliMate följer Tre-lager-arkitektur. Domänobjekt - domänlogiklagret. Viktiga domänklasser i CliMate. De tre lagren. Paketen i CliMate:

Statistik över heltal

Introduktion till MySQL

Installationsanvisningar VisiWeb. Ansvarig: Visi Closetalk AB Version: 2.3 Datum: Mottagare: Visi Web kund

DVA234 Databaser. Dag Nyström, Introduktion till databaser och MS SQL Server

Exempel: Exempel: Exempel: Exempel: $djur=array("ko","katt","älg"); foreach ($djur as $d) { echo $d. " "; } Resultat. ko katt älg

Användarhandledning Version 1.2

Det är fullt tillåtet att göra laborationen innan laborationstillfället.

Webbtjänster med API er

Entity Framework 4.0, en utvärdering av ett ORMramverk. Entity Framework 4.0, an evaluation of an ORM-framework Andreas Hall.

Komponenter med COM (och COM+/VC++ 7.0)

Databaser och Datamodellering Foreläsning IV

Sammansatta datatyper Generics: Parametrisk polymorfism

Databasföreläsning. Del 2 lagrade procedurer, vyer och transaktioner

Jetshop AB WEBSERVICE-API 1.2 ANVÄNDARMANUAL. Version

DAT043 - föreläsning 8

Static vs Dynamic binding Polymorfism. Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018

Design och underhåll av databaser

1.Lär känna MS SQL Observera. Tips. Förberedelse

Spelprogrammering med XNA och MonoGame

Kapitel 4 Arkivmenyn Innehåll

Metoder (funktioner) Murach s: kap Winstrand Development

Allmänna anvisningar: Skriv dina svar på svarsblanketten (se nästa sida) Markera och ange alla svar tydligt och entydigt efter instruktionerna.

Diagnostisktprov Utveckla i Azure

Objektorienterad programmering Föreläsning 9. Copyright Mahmud Al Hakim Agenda (halvdag)

Avancerade Webbteknologier

MVC med Javascript och Ajax. Filip Ekberg

Tips & Trix - Teknik Jeeves World Copyright 2011 Jeeves Information Systems AB

Innehåll. Dokumentet gäller från och med version

Uppstart Inloggning SSMS Skapa Databas Skapa Tabell Skapa Diagram, Fk, RI Hantering av Index, Pk, Fk, Ix Constraints Beräknande fält Några funktioner

Alla rättigheter till materialet reserverade Easec

Introduktion till Jasmine 1.2 ODQL

Grundläggande programmering med C# 7,5 högskolepoäng. Provmoment: Ladokkod: Tentamen ges för: TEN1 NGC011 ADAEK17, ASYST17 samt öppen för alla

TUTORIAL: KLASSER & OBJEKT

Prova på-laboration i PHP Johan Sjöholm johsj@ida.liu.se Institutionen för datavetenskap, Linköpings universitet

INSTALLATION...3 ATT KOMMA IGÅNG...3 PROGRAMMETS DESIGN...4 LÄGGA TILL TABELL...4 EDITERA TABELL...4 EDITERA RELATION...5 SPARA OCH AVSLUTA...

Installera SoS2000. Kapitel 2 Installation Innehåll

Karlstads Universitet, Datavetenskap 1

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

Lär känna MS SQL 2008 / Övning. Observera. Tips. Förberedelse

Inledande programmering med C# (1DV402) Ditt första C#-program med Visual Studio

Kopiering av objekt i Java

Webbserverprogrammering

MVC med Javascript och Ajax. Filip Ekberg

Webbtjänster med API er

Sample exam questions. Database exam TIG058

emopluppen Användning av "Ant" Niklas Backlund Version: 1.4 ( 2002/04/26 07:27:52 UTC)

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

Räkna med ASP.NET MVC 3

Säkerhetskopiering - SQL

Laboration A Objektsamlingar

Delegater, events och lambdauttryck

Planering Programmering grundkurs HI1024 HT 2014

L0009B. Moment. Introduktion till geografiska databaser: G:\L0009B\Allmänt\IntroGeoDB.pdf (F)

ASP.NET Thomas Mejtoft

! Teori och praktik. ! Ändringar från förra året. ! Examination (tenta, projekt) LiU. ! Varför ni? ! Varför överhuvudtaget? LiU

TENTAMEN I PROGRAMMERING. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng

INTRODUKTION TILL JDBC

Transkript:

Entity Framework

Mål med lektionen! Repetera och befästa kunskaperna.

Vad lektionen omfattar Repetera och gå igenom kursen lite snabbt.

Vilka problem vill vi lösa? Vi arbetar med Webbapplikationer Vi kommer att behöva läsa, ändra och lägga till ny data CRUD Det vanligaste sättet när vi arbetar med.net kommer att vara en SQL databas Vi behöver alltså ha en kommunikation mellan vår webbapplikation och databasen(en eller flera)

Vad är O/RM? ORM är ett verktyg för att lagra data från domänobjekt till relationsdatabaser som MS SQL Server, på ett automatiserat sätt utan mycket programmering. O/RM innehåller tre huvuddelar Domän klassobjekt, Relationsdatabasobjekt Mapping information om hur domänobjekt mappas till relationsdatabasobjekt (tabeller, vyer och storedprocedures). ORM låter oss hålla vår databas design skild från vår domän klass design. Detta gör programmet lätt att underhålla och bygga ut. Det automatiserar också standard CRUD operationer (Skapa, läsa, uppdatera och radera) så att utvecklaren inte behöver skriva det manuellt.

Vad är Entity Framework? Skriva och hantera ADO.Net kod för dataåtkomst det är jobbigt och ensidigt. Microsoft har försett oss med ett O/RM ramverk som kallas "Entity Framework" för att automatisera databasrelaterade aktiviteter för ditt program. Microsoft har gett följande definition av Entity Framework: Microsoft ADO.NET Entity Framework är ett objekt / Relational Mapping (ORM) ramverk som gör det möjligt för utvecklare att arbeta med relationsdata som domänspecifika föremål, vilket tar bort det största behovet av att skriva dataåtkomst kod som utvecklare behöver vanligtvis skriva. I och med användningen av Entity Framework, så skapar utvecklare frågor med LINQ, som sedan hämtar och manipulerar data som starkt typade objekt. Entity Framework s ORM implementering tillhandahåller tjänster som ändringsspårning, identitetsupplösning, lazy loading, och fråge översättning så att utvecklarna kan fokusera på sin applikationsspecifika affärslogik snarare än dataåtkomst grunderna. Entity ramverk är ett objekt / Relational Mapping (O / RM) ramverk. Det är en förbättring av ADO.NET som ger utvecklare en automatiserad mekanism för åtkomst & lagring av data i databasen.

Vad är Entity Framework? (forts). Entity ramverket är användbart i tre scenarier. Först, om du redan har befintlig databas eller om du vill designa din databas före dina andra delar av programmet. För det andra, du vill fokusera på dina domänklasser och sedan skapa databasen från dina domänklasser. Tredje, du vill designa ditt databasschema med den visuella designern och sedan skapa databasen och klasser. Figur på nästa sida illustrerar ovanstående scenarier.

Vad är Entity Framework? (forts).

Entity Framework arkitekturen Följande bild visar den övergripande arkitekturen för Entity Framework.

Olika vägar till Entity Framework? Model to database (depricated) Vi bygger själva upp vår modell och utifrån den skapas databasen Code first Vi skapar våra klasser och utfrån dem genereras databasen Database first Utfrån en befintlig databas skapar vi vår modell

Hur hanterar vi ändringar i vår Db? Vi kan vilja uppdatera fält mm i vår Databas Dessa ändringar vill vi ska reflekteras i vår Databas Vi har färdiga verktyg i Visual Studio för automatisera detta Vi kan både lägga till nya tabeller och uppdatera befintliga

Hur hanterar vi ändringar i vår Db (forts) Kör alternativet Update model from database Bygg om projektet för att ändringarna ska reflekteras i koden Om vi ändrar typen av ett fält i Databasen så kommer dessa INTE att reflekteras i modellen. Fullt logiskt eftersom det kan ändra logiken i vårt program Ex. Tänk t ex på string som vi byter till int. Vi kan ha ha 50 olika ställen i vår kod som försöker använda just detta fältet som en sträng. INGA av dessa skulle fungera om vi skulle göra den ändringen. Den ändringen måste vi göra manuellt först i modellen och sedan uppdatera vår kod

Enums Är en distinkt typ i c# som består av ett set(samling) av konstanter, kallad enumerator listan Per Default så startar den på 0 och ökar med 1 En Enum kräver inte att vi deklarerar en siffra men vi kan göra det. Den underliggande typen är per default: int

Extension metoder Vi kan skapa hjälp metoder som kopplas till en specifik typ Vi behöver då i vår kod inte ha med den statiska klassens namn utan kan kalla på den direkt från den typen den implementerats på T ex. istället för att skiva StringUtils.ToDouble(myString) kan vi skriva mystring.todouble() För att det ska fungera måste vi ha med den statiska klassens namn i ett using statement i vår klass om extension klassen inte är med i vårt namespace

Extension metoder (forts) Vår klass ska vara en statisk klass Så att vi kan kalla på den utan att skapa en instans av den Metoden vi skriver måste också vara statisk Vi använder this-nyckelordet för att göra en metod till en extension metod. Metoden kommer att bli en extension-metod till den första typen vi deklarerar i vår metod signatur

IEnumerable IEnumerable är den som gör att vi kan göra en foreach-loop Genom den metoden som heter GetEnumerator ICollection som ärver från IEnumerable ger ytterliggare funktionaliet IList som ärver av ICollection ger oss t ex Add metoden List -> IList -> ICollection -> IEnumerable Linq ger oss en uppsättning av extension metoder som vi kan använda på IEnumerable

Varför LINQ? Vi vill kunna ställa frågor till våra Objekt/Listor/Arrays för att få ut data Objekten kan t ex vara en lista av strängar, en lista med Objekt eller kanske enititeter från Entity Framework För att göra detta kam man klassiskt skriv en foreach/eller forloop. Vill vi ha vissa villkor får vi använda if satser T ex Bara personer vars namn startar på A Vill vi sedan t ex sortera vår resultat så får vi skriva ytterligare kod

Deferred Execution När vi skiver vår Linq fråga skriver vi vad som ska utföras. Vi har dock INTE kört frågan ännu. Frågan körs först när vi använder frågan Detta spelar stor roll i vad vi får tillbaka. Vi måste vara försiktiga så att vi får tillbaka de resultat vi förväntar oss Att frågorna körs först när vi kallar på dem kallas för Deferred Execution

Hur arbetar vi mot EF modellen i kod? 1. Det första vi måste göra är öppna upp vårt context. Det är här som vi arbetar mot vår databas Saker som sker inom vårat context hjälper EF oss att hålla koll på. 2. I vårt context så kan vi utföra olika arbeten T ex: Lägga till, Ta bort och Ändra 3. När vi gjort vad vi ska så kallar vi på SaveChanges() som sparar ner det arbete som vi gjort

Skriva över SaveChanges() SaveChanges() metoden kommer att spara ner vårt arbete vi gjort mot Enity Framework Metoden kommer dock att misslyckas om vi försöker spara ner saker till databasen som inte Db:n kan spara ner t ex pga felaktigt format T ex ett DateTime.MinValue()..NETs min value är mycket lägre än vad som tillåts i en MS SQL Databas. Vi kan då skriva över SaveChanges()-metoden för att tillföra egen validering/funktionalitet mm.

Vilka varianter av LINQ har vi? LINQ to Objects LINQ to XML LINQ to SQL LINQ to Entities

Entity Framework LINQ to Entities and Entity SQL Change tracking and identity management Serialization and data binding Connection and transaction management

DBSet DBSet s är: En samling av en enda entitets typ En uppsättning metoder som: Add, Attach, Remove och Find Används med DbContext för att ställa fråge operationer mot databasen

Ladda relaterad data Överväg en typisk modell för försäljningsinformation. En kontakt är relaterad till en kund, en kund har kundorder, varje kundorder har rader, varje rad avser en produkt, varje produkt kommer från en leverantör som är också relaterad till en kategori. Kan ni föreställa er om du efterfrågar kontakter, och utan att det förväntas, hela innehållet i databasen returnerades - eftersom det var relaterat?

Ladda relaterad data (forts). Detta kallas för deffered loading eller implicit deferred loading eller till och med (som det är mer känt som) lazy loading. Från och med Asp.Net 4.0 så gör Entity Framework lazy loading som default.

Eager loading. Eager loading tar en sträng in som parameter, strängen är namnet på den navigation propertyn som den skall hämta entities igenom. Om vi tänker tillbaka till exemplet med kunder, orders produkter osv. Så skulle vi kunna plocka ut orderdetaljer genom orders enligt följande: Var customers = context.customers.include( Orders.OrderDetails ).Include( Adress es ).ToList(); Orders.OrderDetail kallas en query path och när vi lägger till Include( Adresses ) kallas det för Chaining

Mer om laddning Om vi slår av Lazy loading enligt bilden nedan så kan vi ändå i speciella fall kringgå och ladda in flera relaterade attribut som den markerade kodsnutten i bilden.

Explicit loading (forts). Till skillnad från lazy loading, finns det ingen tvetydighet eller risk för förväxling om när en fråga körs. För att göra så att du använder metoden load på relaterad entitets entry (vi anropar funktionen entry). För en en-till-många relation, anropa metoden load på Collection. Och för en ett-till-ett förhållande, anropa metoden load på Reference