Vad är Entity Framework? -...

Preview:

Citation preview

1

Introduktion till Entity Framework

och LINQ

© Copyright

Mahmud Al Hakim

mahmud@webacademy.se

www.webacademy.se

Vad är Entity Framework?

” The Microsoft ADO.NET Entity Framework is

an Object/Relational Mapping (ORM) framework

that enables developers to work with relational

data as domain-specific objects, eliminating the

need for most of the data access plumbing code

that developers usually need to write. Using the

Entity Framework, developers issue queries using

LINQ, then retrieve and manipulate data as

strongly typed objects...”

Källa och läs mer

https://msdn.microsoft.com/en-us/data/aa937709.aspx

Copyright 2015 - Mahmud Al Hakim www.webacademy.se 2

2

Vad är ADO.NET?

ADO.NET har sina rötter i ADO ”ActiveX

Data Objects”

ADO är ett API för dataåtkomst till olika

datakällor.

ADO lanserades 1996 och skulle ersätta

Microsofts tidigare mekanismer för

dataåtkomst.

ADO.NET lanserades i .NET 1.0 och har många

förbättringar och därför anses som en helt egen

produkt.

Copyright 2015 - Mahmud Al Hakim www.webacademy.se 3

Vad är ORM?

ORM står för Object/Relational Mapping.

ORM är ett samlingsnamn för tekniker att gå mellan

relationsdatabaser och objektorienterade applikationer.

ORM är ett objektorienterad-system som konverterar

databastabeller till klasser, tabellrader till objekt,

och celler till egenskaper.

Copyright 2015 - Mahmud Al Hakim www.webacademy.se 4

3

ORM – Några exempel

Entity Framework

https://msdn.microsoft.com/data

LINQ to SQL

https://msdn.microsoft.com/en-

us/library/vstudio/bb397926.aspx

Nhibernate

http://nhibernate.info/

DatabaseObjects

http://www.hisystems.com.au/databaseobjects/

Dapper ORM

https://en.wikipedia.org/wiki/Dapper_ORM

Copyright 2015 - Mahmud Al Hakim www.webacademy.se 5

6Bildkälla: https://msdn.microsoft.com/en-us/data/aa937709.aspx

Exempel på providers• Microsoft SQL Server

• MySQL

Connector/NET

• Oracle Data Provider

for .NET

• IBM DB2

4

Vad är LINQ?

LINQ står för Language INtegrated Query.

LINQ är en komponent som finns i Microsoft .NET

LINQ to Entities används i Entity Framework.

LINQ to Objects används för att komma åt objekt i minnet.

LINQ to SQL används för att ställa frågor mot MS SQL

(kallas även XLINQ).

LINQ to XML används för att hantera XML-filer

(kallas även XLINQ).

LINQ består till grunden av ett API bestående av tilläggsmetoder

(extension methods) som tillhandahåller de funktioner som

behövs för att skicka förfrågningar till olika objekt.

Copyright 2015 - Mahmud Al Hakim www.webacademy.se 7

Bildkälla: http://codesamplez.com/linq-tutorials 8

5

Entity Framework Datamodeller

Copyright 2015 - Mahmud Al Hakim www.webacademy.se 9

Bildkällahttp://www.webtech360.com/detail/design-entity-data-model-part-1-database-first-3515.html

EF Database First – Övningar mot Norhwind

Copyright 2015 - Mahmud Al Hakim www.webacademy.se 10

6

Add New Item…

Copyright 2015 - Mahmud Al Hakim www.webacademy.se 11

ADO.NET Entity Data Model

Copyright 2015 - Mahmud Al Hakim www.webacademy.se 12

7

EF Designer from database

Copyright 2015 - Mahmud Al Hakim www.webacademy.se 13

Skapa en ”Connection”

Copyright 2015 - Mahmud Al Hakim www.webacademy.se 14

Välj ”SQL Server

Database File”

Och välj sedan

databasen

”NORTHWND.MDF”

8

Copyright 2015 - Mahmud Al Hakim www.webacademy.se 15

Välj EF version…

Copyright 2015 - Mahmud Al Hakim www.webacademy.se 16

9

Välj tabeller…

Copyright 2015 - Mahmud Al Hakim www.webacademy.se 17

Säkerhetsvarnigen är inte så farlig!

Copyright 2015 - Mahmud Al Hakim www.webacademy.se 18

10

Undersök ”References”

Copyright 2015 - Mahmud Al Hakim www.webacademy.se 19

Filen App.config

En XML-fil som innehåller ett antal viktiga inställningar bl. a. connectionStrings

Copyright 2015 - Mahmud Al Hakim www.webacademy.se 20

11

Filen NorthwindModel.edmxEn XML-fil som innehåller ”ConceptualModels”, ” StorageModels”

och mapping mellan dessa! Öppna filen i en XML-editor

Copyright 2015 - Mahmud Al Hakim www.webacademy.se 21

NorthwindModel.edmx forts…

Copyright 2015 - Mahmud Al Hakim www.webacademy.se 22

12

Mapping…

Copyright 2015 - Mahmud Al Hakim www.webacademy.se 23

Mapping Details

Copyright 2015 - Mahmud Al Hakim www.webacademy.se 24

13

Klassen NORTHWNDEntitiesÄrver från DbContext

Copyright 2015 - Mahmud Al Hakim www.webacademy.se 25

connectionStringHämtas från filen App.config

Vad är DbContext?

“A DbContext instance represents a combination of the Unit Of Work and Repository patterns such that it can be used to query from a database and group together changes that will then be written back to the store as a unit.”

Källa: MSDN* Copyright 2015 - Mahmud Al Hakim www.webacademy.se 26

Ett databascontext

är en klass som

sköter läsning och

skrivning till en

databas.

”Ett kontext är en spork” *

14

Vad är DbSet?

“A DbSet represents the collection of all entities in the context, or that can be queried from the database, of a given type. DbSet objects are created from a DbContext using the DbContext.Set method.”

Källa: MSDN

Copyright 2015 - Mahmud Al Hakim www.webacademy.se 27

Klassen Order_Details

Copyright 2015 - Mahmud Al Hakim www.webacademy.se 28

15

Undersök övriga filer…

Copyright 2015 - Mahmud Al Hakim www.webacademy.se 29

Skapa en instans av NORTHWNDEntities

Copyright 2015 - Mahmud Al Hakim www.webacademy.se 30

16

En första LINQ-fråga

Copyright 2015 - Mahmud Al Hakim www.webacademy.se 31

Skriv ut din LINQ-fråga

Copyright 2015 - Mahmud Al Hakim www.webacademy.se 32

17

Visa antal produkter

Copyright 2015 - Mahmud Al Hakim www.webacademy.se 33

En tilläggsmetod

(Extension Method)

Skriv ut en lista på alla produkter

Copyright 2015 - Mahmud Al Hakim www.webacademy.se 34

18

Visa en sorterad lista

Copyright 2015 - Mahmud Al Hakim www.webacademy.se 35

Fallande

Z-A

Visa de 10 första produkter

Copyright 2015 - Mahmud Al Hakim www.webacademy.se 36

En tilläggsmetod

(Extension Method)

19

Visa produkter från 11-20

Copyright 2015 - Mahmud Al Hakim www.webacademy.se 37

Koppla tilläggsmetoder

(Chaining)

Visa en lista på alla produkter som kostar mer än 50

Ett första försök med C#

Copyright 2015 - Mahmud Al Hakim www.webacademy.se 38

20

Visa en lista på alla produkter som kostar mer än 50

En bättre lösning med LINQ

Copyright 2015 - Mahmud Al Hakim www.webacademy.se 39

Copyright 2015 - Mahmud Al Hakim www.webacademy.se 40Källa: MSDN

21

Visa alla produkter som börjar på A

Copyright 2015 - Mahmud Al Hakim www.webacademy.se 41

Visa alla produkter som innehåller ”Anton”

Copyright 2015 - Mahmud Al Hakim www.webacademy.se 42

22

Gruppering

Copyright 2015 - Mahmud Al Hakim www.webacademy.se 43

EF Database First

Övningar mot databasen Videobutik

1. Skapa ett nytt projekt i Visual Studio (Console Application).

2. Lägg till en ”ADO.NET Entity Data Model”.

3. Välj ”EF Designer from database”.

4. Skapa en Connection mot MS SQL Server.

5. Connect till databasen Videobutik.

6. Undersök edmx-filen.

7. Skapa en instans av VideobutikEntities.

8. Skapa en LINQ-fråga som hämtar en sorterad lista på alla

kunder.

9. Skapa egna LINQ-frågor mot databasen.

Copyright 2015 - Mahmud Al Hakim www.webacademy.se 44

23

Överkurs

Vilka kunder har ”Matrix” hemma?

Copyright 2015 - Mahmud Al Hakim www.webacademy.se 45

Copyright 2015 - Mahmud Al Hakim www.webacademy.se 46

Överkurs

Lägg till en ny

kund

Recommended