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

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

Language Integrated Query, LINQ, och databaser

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

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!

ADO.NET Murach Kapitel 17-20

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

Asp.net mvc intro PER KVARNBRINK,

Föreläsning 4. Klass. Klassdeklaration. Klasser Och Objekt

Polymorfi. Objektorienterad och komponentbaserad programmering

public DataSet GenerateDataSet(SqlCommand dbcommand, String tablename, out String errormsg) { errormsg = "";

Innehåll. dynamisk bindning. och programmering CRC) u Arv, polymorfi och

Övning Dictionary. Övning 1. Steg 1: På din virtuella maskin, starta Visual Studio.

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

Programmering i C++ EDA623 Något om C# EDA623 (Föreläsning 14) HT / 17

Föreläsning 5 (6) Metoder. Metoder Deklarera. Metoder. Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc

Delegater, events och lambdauttryck

ASP.NET Thomas Mejtoft

INTRODUKTION TILL JDBC

Metoder (funktioner) Murach s: kap Winstrand Development

Generiska konstruktioner. Kursbokens kapitel 13

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.

Structured Query Language (SQL)

DIAGNOSTISKT PROV. Tid. Hjälpmedel. Antaganden. Rättning. Övrigt. Diagnostiskt Prov. Klockan Inga

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

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

Programsystemkonstruktion med C++: Övning 2. Karl Palmskog september 2010

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

Arv. Objektorienterad och komponentbaserad programmering

UML. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

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

Objektorienterad Programkonstruktion. Föreläsning 2 2 nov 2016

Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier

Lab 6: ASP.NET 2.0 Providermodellen

Idag. statiska metoder och variabler. private/public/protected. final, abstrakta klasser, gränssnitt, delegering. wrapper classes

Classes och Interfaces, Objects och References, Initialization

WCMS-15, Webbutvecklare CMS

Introduktion till arv

Inledande programmering med C# (1DV402) Tärningarna ska kastas

Programsystem konstruktion med C++ (2D1387) Innehåll. övning 2 klasser och arv

DAT043 - Föreläsning 7

Introduktion till frågespråket SQL (v0.91)

The Last Adventure. Innehåll. Objektorientering. Språket Java. Java - Paket. Java - synlighet. Den sista lektionen. Repetition.

Objektorienterad Programmering DAT043

Föreläsning 8 Programmeringsteknik och Matlab 2D1312/2D1305. Klass Object, instans av klass public/private Klassvariabler och klassmetoder

TUTORIAL: KLASSER & OBJEKT

Subtyping, co- och contra-variance. Objekt-orienterad programmering och design Alex Gerdes, 2016

JAVA Mer om klasser och objektorientering

Programmering i C++ EDA623 Arv. EDA623 (Föreläsning 6) HT / 42

DAT043 - föreläsning 8

Vad handlar kursen om? Algoritmer och datastrukturer. Vad handlar kursen om? Vad handlar kursen om?

Objektsamlingar i Java

VAD GÖR DU / VEM ÄR DU?

Omtentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-17, TDA540. Dag: , Tid:

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

TDDC76 Programmering och datastrukturer

Abstrakta Klasser 2. Kodning är bara en liten del i programvaruutvecklingen 6% 1% 6% Abstrakta Klasser - deklaration. Programutveckling sker i faser

Innehåll. Föreläsning 3. javax.naming.context. javax.sql.datasource. Vad är JDBC? Java Naming and Directory Interface(JNDI) Viktigaste metoder:

Föreläsning 3 Innehåll. Generiska klasser. Icke-generisk lista ArrayList, skiss av implementering. Icke-generisk lista Risk för fel

Diagnostiskt Prov. Antaganden Om förutsättningar saknas I en uppgift skall rimliga antaganden göras och nedtecknas.

Föreläsning 8. Arv. Arv (forts) Arv och abstrakta klasser

Frekvenstabell över tärningskast med C#

Modeller, Objekt och Klasser

Ny skalbar och öppen OLAP-teknologi, SAS OLAP server

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

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

Grundläggande programmering med C# 7,5 högskolepoäng

Alla rättigheter till materialet reserverade Easec

Stored procedure i ASP.NET

Programmering B med Visual C

Övningar Lektion3 Avancerade Webbteknologier 2

Inledande programmering med C# (1DV402) Introduktion till C#

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

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... }

Subtyping, co- och contra-variance. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016 Johannes Åman Pohjola, 2017

Databaser - Design och programmering

Vyer, Prepared Statements, Triggers

Objektbaserad programmering

Design av interaktiv multimedia. Läs i förväg om det som övningarna kommer att beröra. Träna hemma både före och efter övningarna.

Länkade strukturer. (del 2)

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

Provmoment: TEN1 Ladokkod: NGC011 Tentamen ges för: Tentamen DE14, IMIT14 och SYST14 samt öppen för alla

Stored procedure i ASP.NET

Arv Murach s: kap 14

TENTAMEN I DATAVETENSKAP

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

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

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Exempelduggan. Luffarschack. Koda spel

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering.

KARLSTADS UNIVERSITET 12/8/09 informatik & datavetenskap Johan Öfverberg, Kerstin Andersson Laboration 4, ISG A04 och DVG A08 HT-09

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Övningar i SQL. SQLAccess.doc Ove Lundgren

Objekt och klasser - Introduktion. Objekt. SparKonto.java 2. SparKonto.java 1. Konton.java. Ett objekt har: Ett bankkonto

Frekvenstabell över tärningskast med C#

DAT043 Objektorienterad Programmering

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

Lösningsförslag till exempeltenta 2

Mutability och State. Objekt-orienterad programmering och design (DIT953) Niklas Broberg / Johannes Åman Pohjola, 2018

Vad är en databas? Databaser. Relationsdatabas. Vad är en databashanterare? Vad du ska lära dig: Ordlista

Transkript:

Arbeta med databas Översikt Arbeta med Entity Data Models. LINQ (Language Integrated Query). Lektion 1: Arbeta med Entity Data Models Introduktion till ADO.NET Entity Framework. Stöd i ADO.NET Entity Framework. Versioner. Entity Data Model Tools. Skräddarsy genererade klasser. Exempel på klass som har generats av guide. Partial Class. Fördelar med Partial Class. Läsa och modifera information. Spara information.

Introduktion till ADO.NET Entity Framework ADO.NET Entity Framework tillhandahåller Entity Data Model (EDM). Entity Data Model: - Modeller som kan användas för att knyta databastabeller och frågor till.net Framework objekt. Entity SQL: - Är ett lagringsoberoende frågespråk som ger möjlighet till att fråga och manipulera EDM construct. Introduktion till ADO.NET Entity Framework (forts.) Object Service: - Tjänst som ger möjlighet att arbeta med Common Language Runtime (CLR) objekt. Versioner Version 5. Version 6. Version 7. Core.

Stöd i ADO.NET Entity Framework ADO.NET Entity Framework har stöd för: - Skriva programkod mot konceptuell modell. - Lätt uppdatering av applikationen när ny datakälla skall användas. - Skriva programkod som är oberoende av lagring. - Skriva programkod som tillåter kontroller vid kompilering. Entity Data Model Tools Stöd finns för ett antal ingående verktyg: - Database-first design: - Du designer och skapar databas först innan modell genereras, begränsningar i flexibiltet. - Code-first design: - Designar poster för din applikation, skapar därefter databasstruktur runt dessa poster. Tillhandahåller möjlighet att visa, uppdatera och ta bort poster. Update Model Wizard: - Används för att uppdatera modell. Entity Data Model Tools (forts.) Ett antal guider finns: Guide Entity Data Model Wizard Update Model Wizard Generated Database Wizard Beskriving Ger möjlighet att generera ny konceptuell modell från existerande information, genom att använda design metoden database-first Ger möjlighet att uppdatera existernade konceptuell model med förändringar Ger möjlighet att uppdatera existerande konceptuell modell, som har blivit designad i Entity Data Model Designer, genom att använda desigmetoden code-first

Övning Skapa Entity Data Model (10a) Skräddarsy genererade klasser När du använder guiden Entity Data Model för att generera en modell, kommer klasser för att exponera poster i modell att automatiskt genereras. Dessa klasser innehåller egenskaper dom tillhandahåller tillgång till egenskaper för poster i databasen. Modifiera inte dessa klasser, använd partial class och partial methods för att lägga till specifik funktionalitet till de genererade klasserna. Exempel på klass som har generats av guide namespace FourthCoffee.Employees using System; using System.Collection.Generic; public partial class Employee public int EmployeeID get; set; public string FirstName get; set; public string LastName get; set; public Nullable<System.DataTime> DateOfBirth get; set public Nullable<int> Branch get; set; public Nullable<int> JobTitle get; set; public virtual Branch Branch1 get; set; public virtual JobTitle JobTitle1 get; set;

Partial Class Klasser i C# finns i separata fysiska filer, med extension.cs. I C# finns det möjlighet att dela upp en klass i flera filer, nyckelordet partial används. Partial kan appliceras på klass, metod, interface eller structure. Måste ha samma access modifiers. Partial Class -exempel PartialClassFil1.cs: public partial class MyPartialClass public MyPartialClass() public void Method1(int val) Console.WriteLine(val); Partial Class -exempel PartialClassFil2.cs: public partial class MyPartialClass public void Method2(int val) Console.WriteLine(val); Kompilator kommer att kombinera ihop dessa till en klassfil.

Fördelar med Partial class Flera utvecklar kan arbeta med klass i separata filer. Vanligt vid automatisk generad kod, kod kan läggas till utan att behöva skapa om källfil. Läsa och modifiera information Den automatiskt generade programkoden för en modell, innehåller också en partial class som ärver från klassen System.Data.Entity.DbContext. Tillhandahåller funktionalitet för att fråga och arbeta med poster som objekt. Innehåller en standard constructor som initierar klass genom att använda anslutningssträng som guiden genererar. Läsa och modifiera information (forts.) Klassen FourthCoffeeEntities: public partial class FourthCoffeeEntities : DbContext public FourthCoffeeEntities() : base( name=fourthcoffeeentities ) public DbSet<Branch> Branches get; set; public DbSet<Employee> Employees get; set; public DbSet<JobTitle> JobTitles get; set;

Läsa och modifiera information (forts.) Läsa information: FourthCoffeeEntities DBContext = new FourthCoffeeEntities(); // Print a list of employees. foreach (FourthCoffee.Employees.Employee emp in DBContext.Employees) Console.WriteLine("0 1", emp.firstname, emp.lastname); Modifiera information: var emp = DBContext.Employees.First(e => e.lastname == "Prescott"); if (emp!= null) emp.lastname = "Forsyth"; DBContext.SaveChanges(); Spara förändringar När information har förändrats i modellen, måste den skrivas tillbaks. Detta görs genom att kalla på metoden SaveChanges i objektet ObjectContext. DBContext.SaveChanges(); Övning Läsa och modifiera information i EDM (10b)

Lektion 2: LINQ (Language Integrated Query) Använda LINQ. Välja ut information. Filtrera information på kolumn. Använda Anonymous Types. Tvinga fram exekvering. Använda LINQ Ett alternativ till Entity Framework är att använda LINQ. LINQ kan användas för att ställa frågor till ett stort antal källor: -.NET Framework collections, SQL Server databaser, ADO.NET data sets och XML-dokument. - Alla datorkällor som implementerar Ienumerable. Används för att: - Välja ut information. - Filtrera information på rad eller kolumnnivå. - Kan även användas för beräkningar, t ex räkna antalet poster. Välja ut information Använda Select för att hämta all information för en post: IQuerable<Employee> emps = from e in DBContext.Employees select e; Det som kommer tillbaks är IQueryable<Employee>, vilket ger möjlighet att läsa igenom information som kommer tillbaks. Filtrera information på rad: string _LastName = Prescott ; IQuerable<Employee> emps = from e in DBContext.Employees where e.lastname == _LastName select e; Exemplet använder nyckelordet where för att returnera radinformation där användare har efternamn Prescott.

Filtrera information på kolumn Exemplet visar hur ny typ deklareras, för att lagra information från kolumn som frågan kommer att returerna: private class FullName public string Forename get; set; public string Surname get; set; Private void FilteringDataByColumn() IQuerable<FullName> names = from e in DBContext.Employees select new FullName Forename = e.firstname, SurName = e.lastname ; Filtrera information på kolumn (forts.) Få tillgång till resultatet: foreach (var emp in emps) Console.WriteLine(0 1, emp.firstname, emp.lastname); Övning Använda LINQ to Entities (10c)

Använda Anonymous Types I tidigare exempel, returneras information till varabel IQuerable<Type>. Anonymous Types kan användas för att returnera värde. Nyckelordet new används för att skapa instans för variabel. Inget namn används för typ. Detta öppnar upp möjlighet att göra mer avancerade frågor med LINQ: - Gruppera resultatet. Räkna fram t ex antalet poster, med aggregating. Navigera i informationen. Övning Använda Anonymous Types (10d) Tvinga fram exekvering När LINQ-fråga definieras, körs den inte förrän du försöker använda det returnerade värdet. I exemplet kommer inte fråga att köras förrän foreach-blocket starts: IQueryable<Employee> emps = from e in DBContext.Employees select e; foreach (var emp in emps) Console.WriteLine( 0 1, emp.firstname, emp LastName); Om du däremot definierar LINQ query som returnerar ett singeltone värde, Average, Count eller Max, kommer query att köras direkt. Nödvändigt, för sekvens av resultat behövs.

Tvinga fram exekvering (forts.) Standardbeteende kan förändras genom att kalla på metod: - ToArray. - ToDictionary. - ToList. IList<Employee> emps = (from e in DBContext.Employees select e;).tolist() foreach (var emp in emps) Console.WriteLine( 0 1, emp.firstname, emp LastName); Repetitionsfrågor