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 1
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 2
ORM Några exempel Entity Framework https://msdn.microsoft.com/data LINQ to SQL https://msdn.microsoft.com/enus/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 Exempel på providers Microsoft SQL Server MySQL Connector/NET Oracle Data Provider for.net IBM DB2 Bildkälla: https://msdn.microsoft.com/en-us/data/aa937709.aspx 6 3
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 4
Entity Framework Datamodeller Bildkälla http://www.webtech360.com/detail/design-entity-data-model-part-1-database-first-3515.html Copyright 2015 - Mahmud Al Hakim www.webacademy.se 9 EF Database First Övningar mot Norhwind Copyright 2015 - Mahmud Al Hakim www.webacademy.se 10 5
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 6
EF Designer from database Copyright 2015 - Mahmud Al Hakim www.webacademy.se 13 Skapa en Connection Välj SQL Server Database File Och välj sedan databasen NORTHWND.MDF Copyright 2015 - Mahmud Al Hakim www.webacademy.se 14 7
Copyright 2015 - Mahmud Al Hakim www.webacademy.se 15 Välj EF version Copyright 2015 - Mahmud Al Hakim www.webacademy.se 16 8
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 9
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 10
Filen NorthwindModel.edmx En 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 11
Mapping Copyright 2015 - Mahmud Al Hakim www.webacademy.se 23 Mapping Details Copyright 2015 - Mahmud Al Hakim www.webacademy.se 24 12
Klassen NORTHWNDEntities Ärver från DbContext connectionstring Hämtas från filen App.config Copyright 2015 - Mahmud Al Hakim www.webacademy.se 25 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. Ett databascontext är en klass som sköter läsning och skrivning till en databas. Ett kontext är en spork * Källa: MSDN * Copyright 2015 - Mahmud Al Hakim www.webacademy.se 26 13
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 14
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 15
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 16
Visa antal produkter En tilläggsmetod (Extension Method) Copyright 2015 - Mahmud Al Hakim www.webacademy.se 33 Skriv ut en lista på alla produkter Copyright 2015 - Mahmud Al Hakim www.webacademy.se 34 17
Visa en sorterad lista Fallande Z-A Copyright 2015 - Mahmud Al Hakim www.webacademy.se 35 Visa de 10 första produkter En tilläggsmetod (Extension Method) Copyright 2015 - Mahmud Al Hakim www.webacademy.se 36 18
Visa produkter från 11-20 Koppla tilläggsmetoder (Chaining) Copyright 2015 - Mahmud Al Hakim www.webacademy.se 37 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 19
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 Källa: MSDN 40 20
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 21
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 22
Överkurs Vilka kunder har Matrix hemma? Copyright 2015 - Mahmud Al Hakim www.webacademy.se 45 Överkurs Lägg till en ny kund Copyright 2015 - Mahmud Al Hakim www.webacademy.se 46 23