Database for udviklere. Jan Lund Madsen PBS10107



Relaterede dokumenter
Hvorfor skal vi bruge objekt orienteret databaser?

Casper Fabricius ActiveRecord. O/RM i Ruby on Rails

Object-Relational Mapping

Bemærk! Et PHP script har kun brug for at forbinde én gang til databaseserveren. Det kan så sagtens udføre flere kommandoer vha. denne forbindelse.

Listen over reserverede ord er meget lang, men de væsentligste vil jeg beskrive her i denne artikel:

Klik på linket her for en beskrivelse af hvordan du installerer CIP 4.3 opdateringen.

Indholdsfortegnelse Databaser og PHP... 3 Opgave... 4 Opgave... 5 Opgave... 6 Sidste opgave er en lille gæstebog... 7 Kilder og nyttige links:...

PID2000 Archive Service

Tidligere gik denne i øvrigt under navnet DLINQ for Database LINQ, og man kan finde masse materiale om emnet under dette navn på Internettet.

Delphi og Databaser for begyndere

UPLOAD. Af Database og Website til Skolens Server

CLR Integration. Af Torsten Holtse, pbs Indhold

Opsætning af udviklerversion af Microsofts open source XDS.b fra Codeplex Projekt: Net4Care Version: V0.1,

Indholdsfortegnelse for kapitel 3

Testservice med anvendelse af Microsoft software.

Databaseadgang fra Java

Grundlæggende OOA - OOD

PHP Quick Teknisk Ordbog

Kursuskatalog 2012 TwinCAT Basic og Extended

MapBasic &.NET interaktion. MapBasic.NET. Jakob Lanstorp IT konsulent COWI. Odense 23. Juni jun 2011 MapBasic &.

Installation og Drift. Aplanner for Windows Systemer Version 8.15

SIMS integration med Microsoft Active Directory, er implementeret, via en mellemdatabase.

FKG datamodellen Version ArcGIS integration Sidste revisionsdato: 23. maj 2014

Software Projekt NoSQL vs RMDB

Databasesystemer. Databaser, efterår Troels Andreasen. Efterår 2002

DB undervisning 01-01

Database kursus Forår 2013

Samspillet mellem databaser og kort styres af GeoCAD programmet GeoDB.

Brugervejledning til databrowseren

EasyIQ Opdatering > 5.4.0

Kursuskatalog 2013 TwinCAT Basic og Extended

Data lagring. 2. iteration (implement backend)

Side 1. Databaser og SQL. Dagens gang. Databasebegreber. Introduktion til SQL Kap 1-5

Gem dine dokumenter i BON s Content Management System (CMS)

MySQL C API. Denne artikel beskriver hvordan man bruger MySQL C API. Der er beskrivelse af build med forskellige compilere.

WINDCHILL THE NEXT STEPS

VEJLEDNING I OPSÆTNING I MICROSTATION, MAPINFO, QGIS OG ARCGIS

SQL ny front-end

Installation og Drift. Aplanner for Windows Systemer Version

DATABASE - MIN MUSIKSAMLING

De vigtigste SQL-sætninger. SQL kap Oprette database. DDL og DML

Guide - Sådan opretter du en backup

VEJLEDNING I OPSÆTNING I MICROSTATION, MAPINFO, QGIS OG ARCGIS

Internet. Komplet featureliste. Aesiras - integreret Regnskab, Handel og Internet

ADIS, WS og Meta Service

Kursuskatalog 2017 TwinCAT 2 TwinCAT 3

I denne guide vil jeg prøve at give en beskrivelse af hvad man skal gøre for at få adgang til Microsoft Azure via Dreamspark når man går på Easj.

Curriculum vitae. Personlige oplysninger. Præsentation. Projekterfaring

MySQL i Java. Tutorial lavet af Jákup W. Hansen TSU semester 05.januar 2007

Skriftlig eksamen i kurset. Informationssystemer

Umbraco installationsvejledning

Flerbruger miljø, opdel database

Database. lv/

Dynamisk hjemmeside: NeuTravel

Curriculum Vitae: Jeg kan hurtigt overskue komplekse systemer og finde brugbare løsninger på selv vanskelige problemer.

Datatekniker med programmering som speciale

Curriculum Vitae: Jeg kan hurtigt overskue forretningers ønsker samt komplekse systemer og finde overskuelige løsninger på selv vanskelige problemer.

Arkitektur principper og design mønstre til realisering af enterprise applikationer baseret på rige domænemodeller (og.net)

Introduktion til SQL

Arkitektur for begyndere

Datatekniker med programmering som speciale

Dokumentering af umbraco artikeleksport:

EG Data Inform. Byggebasen. WCF og webservices. Jens Karsø

Indholdsfortegnelse Valg af opgave... 2 Introduktion... 2 Problem... 2 Målgruppe... 2 Afsender... 2 Budskab... 2 Kodning... 3 Effekt...

OS2 Opgavefordeler. Løsningsbeskrivelse Version 2. Udarbejdet af Miracle A/S Simon Møgelvang Bang

Kursuskatalog 2015 TwinCAT2 TwinCAT3

Curriculum Vitae: Jeg kan hurtigt overskue forretningers ønsker samt komplekse systemer og finde overskuelige løsninger på selv vanskelige problemer.

Simulering af en Mux2

Ansat i FOA fagforening, hvor jeg bl.a. arbejder med integration og sagsbehandlingssystemer.

PHP kode til hjemmeside menu.

Office2013 og Office2011 På alle computere, som lærerne har lånt af skolen er der installeret Office2013 til PC og Office2011 til MAC.

TimePlan version Installationsvejledning

Import fra C Revisor Informatik ApS

DAXIF# - Delegate Automated Xrm Installation Framework. Delegate A/S

Tietgenskolen - Nørrehus. Data warehouse. Database for udviklere. Thor Harloff Lynggaard DM08125

Transkript:

Database for udviklere Jan Lund Madsen PBS10107

Indhold LINQ... 3 LINQ to SQL og Arkitektur... 3 O/R designere... 5

LINQ Den store introduktion med.net 3.5 er uden tvivl LINQ(udtales link): Language-INtegrated Query eller bare LINQ. Skåret helt til benet er LINQ blot en SQL-lignende syntaks til forespørgsler på typer, der understøtter IEnumerable<T> 1. IEmunarable<T> specificerer reelt kun en metode, nemlig GetEnumerator(). GetEmunerator() returnerer en instans af en type, der implementerer IEnumerator<T>. Det lyder måske ikke af det vilde på overfladen, men når man tænker på hvor mange typer, der understøtter IEnumerable<T> samt taget i betragtning, at egne typer naturligvis også kan implementere dette interface, begynder det at blive yderst interessant. I praksis betyder det, at vi fx kan anvende LINQ mod collections, XML og naturligvis relationelle data 2 hvis de dog er mappet til et objekt(er). Altså er LINQ en teknologi til noget med at skrive forespørgelser eller søgninger/filtering osv. direkte som en del af programmeringssprogets syntaks. Her kan vi se vejen fra fx Csharp til LINQ til data og de forskellige features der tilbydes. LINQ TO SQL OG ARKITEKTUR LINQ to SQL er et eksempel på en ORM: Object-Relational Mapping. Når man arbejder med objekt orienteret programmering og relationelle databaser, sidder programmører ofte med problemstillingen om hvordan objekter i programmeringssproget skal repræsenteres ved rækker og relationer i databasen. For selv om der er en hel del ligheder, så er der også en del væsentlige forskelle imellem OOP verdenen og den Relationelle verden 3. En ORM er en teknologi som forsøger at slå bro imellem de to verdener. LINQ i sig selv er dog ikke ORM - LINQ som navnet (Language INtegrated Query) antyder er et sprog til at skrive querys imod en eller anden form for datastore. LINQ to SQL udgør imidlertid hvad vi vil kalde ORM s, da de netop 1 FirstPress LINQ for Visual C# 2008 af Fabio Claudio Ferracchaiti side 9 2 http://msdn.microsoft.com/da-dk/library/bb308959(en-us).aspx 3 http://en.wikipedia.org/wiki/object-oriented_programming

håndterer mapning og persistering af data i databaser. Det fungerer ved at man designer en mapningsstruktur 4. LINQ to SQL s O/R designer er et super nemt og stærkt værktøj i visual studio til at mappe sine rationelle data tabeller til objekter. Det kan dog også sagtens lade sig gøre at lave den mapping uden O/R designeren. Derved kan programmøren få indblik i hvad der skal til og selv kontrollere koden. LINQ to SQL baserer sig på at man opretter og mapper en klasse for hver tabel man er interesseret i. Klassen dekoreres med en [Table] attribut og de enkelte felter med en [Column]. IsPrimaryKey = true indikerer at det er primær nøglen i tabellen. Det er faktisk alt hvad der skal til for at mappe. Der ligger dog meget mere i det end som så. Selvfølgelig ville man lave privat attributter og Get og Set metoder in real life. Derefter kan vi benytte LINQ sprogets faciliteter. Vi skal dog lige oprette en forbindelse mellem tabellen og databasen. Dette håndteres via DataContext-klassen 5, og denne er så at sige hjertet i LINQ to SQL. Nu kan vi oprette forbindelse mellem Nyheds objektet og nyheds tabellen. 4 http://en.wikipedia.org/wiki/language_integrated_query 5 FirstPress LINQ for Visual C# 2008 af Fabio Claudio Ferracchaiti side 97

Her ses hvordan en LINQ query bliver transformeret til SQL query. O/R DESIGNERE Man kunne sagtens have lavet denne mapning manuelt med alle de tabeller og views der skulle bruge. Men der findes allerede et super stærkt værktøj i VS til dette og når man skal mappe views eller tabeller bliver denne process en hel del nemmere ved at lade O/R designeren generer klassen for en. I VS gør vi som vi plejer når vi vil lave et nyt Item. Højre klik på solution og Add New item. Så kan man se der er kommet nye muligheder med.net 3.5 i forhold til 2.0 her benytter vi os LINQ to SQL Classes og giver denne et passende navn. Hvis vi holder fast i en nyhed for at vise forskelle og ligheder mellem manuel mapning og O/R designerens mapning, er det Nyheder.dbml vi tager fat i. Derefter skal vi lave en data connection vha. server explorer. Trykker add connection, derefter skriver vi server navn osv. ind og finder vores database hvor vi kan navigere ned til tabellerne, view osv. Så trækker vi skam bare Nyheds tabellen ind i det hvide felt. Så generer VS entitet-klassen og vi kan se en grafisk repræsentation af den: Så er man klar til at benytte LINQ sprogets faciliteter. Denne gang vha. O/R designeren i VS.

O/R designeren har lavet det for os. Og vi slipper for behov for connectionstring, da det også bliver generet for os. Så nu er det tiden til at dykke ned i det som den generer. Det er to filer, et layout som er den grafiske repræsentation og en designer cs som er koden. Læg mærke til det lille s i Nyheds. Det skyldes simpelthen at værktøjet er Microsoft og at det forsøger at sætte amerikansk flertals s på navnet. I Nyheder.designer.cs kan vi se her hvordan vi får forbindelse til databasen, den er defineret i app.config filen. I Nyheder.designer.cs kan vi også se her hvorfor vi slipper for context.gettable, det er lavet for os her. Og der kommer flertals s et også ind i billedet. Ellers er det meget lig med hvad vi er vant til. Private attributter. Her er det værd at bemærke vi ikke skal type bestemme dem. Det gør O/R designeren for os.

Så kommer GET og SET metoder, hvor man også kan sætte en masse ting primærnøgle, hvilken type osv. Selvom man er typen der gerne vil skrive ens entitets klasse selv kan det faktisk være meget lærerigt at benytte O/R designerens funktion og derved kigge koden igennem for inspriration. Dette virker dog kun til MSSQL. Men hvis man vil benytte denne funktion er der allerede lavet DLL er til dette. ALinq.org har udgivet en provider der virker til Access, MySQL, POSTgreSQL osv. Alternativt, vil man kunne gøre brug af LINQ to Entities, der binder LINQ sammen med ADO.NET.