Unsere Datenschutzrichtlinie wird in Kürze aktualisiert. Bitte sehen Sie sich die Vorschau an.

Visual C# 2011 Grundkurs

Linq2SQL

Testen Sie unsere 2016 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Daten mit den ADO.NET Klassen aus der Datenbank zu holen und daraus die passenden Objekte zu erstellen, ist eine nervenaufreibende Angelegenheit. Dieses Objekt-Relationale-Mapping ist jedoch nötig, um die Daten in C# nutzen zu können. Sie sehen, wie einfach dergleichen mit Linq2SQL automatisch geht und wie leicht die Abfragesprache Linq ist.
11:42

Transkript

Wir schauen uns jetzt einmal die Technologie "Linq2SQL" an. Linq2SQL ist relativ neu im .NET Framework und ist eine Technologie, die einen sog. Objekt-Relationalmapper darstellt. Wenn wir unsere Datenbankinformationen mit den ADO.NET-Klassen, z.B. der Command-Klasse oder der Connection-Klasse aus der Datenbank holen, dann haben wir ja meistens solche Ergebnislisten als Ergebnis vorliegen. D.h. wir müssen die Werte aus diesen Ergebnislisten nehmen, daraus Objekte bauen und erst dann können wir in unserem Programm damit weiterarbeiten. Diesen Vorgang nennt man objektrelationales Mapping. Also ich mappe quasi meine Relationen, die ich in den Datenbanken habe, auf meine Objekte in der Programmiersprache. Das ist sehr, sehr viel Code, den man aber immer schreiben muss, und vor allen Dingen auch sehr lästig zu schreiben, der Code. Deswegen gibt es da natürlich Technologien, die einem das Ganze abnehmen. Das ist eben Linq2SQL. Auf der anderen Seite ist Linq, also nur Linq ohne das SQL, auch noch eine wirklich richtig großartige Technologie, weil ich da die Möglichkeit habe, hier auf Datenbanken und auch generell auf Objekte bestimmte Abfragen in C# zu formulieren. Linq2SQL macht das nachher derart, dass ich in C# so eine Anfrage formuliere, Linq das Ganze in ein SQL-Statement umwandelt, die Datenbank aus der Datenbank holt und ich dann plötzlich Objekte habe und die dann ganz normal weiter verwenden kann. Aber das schauen wir uns gleich einmal an. Um Linq2SQL nutzen zu können, müssen wir zunächst Klassen erstellen, die Linq2SQL nutzen kann. Das machen wir mit einem Rechtsklick auf die Projektmappe, da "Hinzufügen" und dann auf "Neues Element". Ein bisschen weiter unterhalb finden wir die Linq2SQL Klassen. Nun können wir einen Namen vergeben, nennen sie mal nur "Data" und fügen die hinzu. Jetzt stoßen wir zum ersten Mal an die Grenzen von Microsoft Visual Studio 2010 Express. Linq kann ich normalerweise, wenn ich eine kommerzielle Version von Visual Studio habe, z.B. mit einem SQL Server direkt benutzen. Bei Linq hier innerhalb von der Expressversion ist es leider nur möglich, mit SQL Datendateien zu arbeiten, also nicht mit dem richtigen SQL Server. Das ist natürlich auf der einen Seite schade, aber auf der anderen Seite ist das Arbeiten mit diesen Datenbankdateien natürlich auch eine sehr spannende Sache, und in sehr, sehr vielen Projekten reicht das meistens auch wirklich aus, und da ist das Installieren von einem SQL Server ohnehin vollkommen übertrieben. Deswegen schauen wir uns Linq einmal unsere Datenbankdatei "Datenbase" an, und dort haben wir zwei Tabellen, zunächst "Category" und "Contact", und diese stehen zusammen in Verbindung. Und das schauen wir uns hier oben einmal in dem Diagramm an, d.h. also ich habe eine Tabelle "Contact", jeweils ein Primärschlüssel in beiden natürlich, und in "Contact" steht ein Vorname, ein Nachname und eine URL und einen Fremdschlüssel in die Tabelle "Category". Und in der "Category" wiederum habe ich nur ein einziges Feld, und das ist der Name, natürlich oben der Primärschlüssel. Hier dazwischen zu sehen: Ich habe also eine Beziehung zwischen "Contact" und "Category", die wird, wie gesagt, hergestellt zwischen FK-Category und der ID. Das, was wir jetzt hier sehen, ist ein ER-Diagramm, also ein "Entity Relationship" Diagramm. Es sind Entitäten, und zwischen diesen Entitäten sind Beziehungen. Das ist eine Entität, das auch, das ist eine Beziehung. Es sieht schon so ähnlich aus, wie es auch bei objektorientierter Programmierung benutzt wird. Dort haben wir das objektorientierte Paradigma, aber es ist eben doch ein kleines bisschen anders. Wir müssen jetzt quasi zwischen diesen Entitäten und unseren Objekten irgendwelche Arbeit durchführen, damit wir quasi mit unserer Objektstruktur auf dieser Entitätsstruktur arbeiten können. Genau das macht eben Linq2SQL. Wir schließen das hier oben nochmal und ziehen einmal diese beiden Tabellen an dieser Seite hier in unsere Linq2SQL Datei rein. Zunächst "Contact" und dann wird uns hier gesagt, dass diese Verbindung eine lokale Datendatei benutzt - klar, hatten wir eben gesagt, das ist die Bedingung, dass wir Linq2SQL überhaupt benutzen können - und wir sagen jetzt einmal "Ja" und dann wird diese Datendatei hier vorne rechts in unsere Projektmappe reinkopiert. Also wir machen das Ganze mal und dann haben wir hier das Ganze nochmal abgebildet, allerdings das, was wir jetzt hier sehen, ist keine Entität mehr, sondern tatsächlich eine Klasse. Also da hat Linq2SQL bereits Arbeit geleistet und uns aus diesem Entitätsmodell unten eine Klasse erstellt. Wir ziehen uns noch die andere Klasse dazu, die "Category"-Klasse, und man sieht, dass Linq2SQL automatisch erkennt, dass zwischen diesen beiden Tabellen eine Beziehung besteht, und bildet diese Beziehung einfach für uns ab und so haben wir später innerhalb von unserer Klasse "Contact" eine Eigenschaft, die heißt "Category", und darin steckt dann das assoziierte "Category"-Objekt. Und das ist der erste Teil von Linq2SQL. Dass es die Arbeit macht, das ist wirklich großartig, und den anderen Teil schauen wir uns jetzt auch einmal an. Dazu gehen wir hier in unsere Program.cs und in unsere Main-Methode. In unserer Main-Methode müssen wir jetzt von diesen Klassen, die wir gerade erstellt haben, zunächst einmal einen sog. Data-Context instantiieren. Das ist unser DataDataContext, also wir haben eben unsere Klasse "Data" genannt, und zusätzlich an diesen Namen einen DataContext gehangen, wir nennen das einmal "db" für "Database", und dann erstellen wir mal einen neuen Datenkontext. Dieser Datenkontext - wenn man ihn normalerweise mit einem SQL Server benutzen würde - würde eine Verbindung zu diesem SQL Server aufbauen. Hier wird die Datei geöffnet. In beiden Fällen muss man natürlich immer zusehen, dass später sowohl die SQL Verbindung geschlossen wird, um keine Ressourcen auf dem Server zu verbrauchen, und auf der anderen Seite natürlich diese Datei zu schließen, damit irgendein anderes Programm die auch mal benutzen kann. Das vergisst man ganz gerne. Jetzt gibt es in C# ein sog. Using-Statement. Using heißt, dass, wenn ich jetzt innerhalb von diesen Klammern etwas mache oder etwas instantiiere, ein Objekt, dann kann ich hier unten in einem Anweisungsblock mit diesem Objekt arbeiten und nachdem dieser Anweisungsblock abgearbeitet ist, dann wird eine gewisse Methode aufgerufen. Das ist die sog. Dispose-Methode und dort wird diese Datei, oder diese Datenbankverbindung wieder freigegeben. Das heißt, man sollte immer mit diesem Using-Statement arbeiten, um auch wirklich sicher zu gehen, dass man nicht vergessen hat, eine Datenbankverbindung zu schließen oder eben so eine Datendatei. An dieser Stelle möchten wir jetzt hingehen und uns Daten aus unserer Datenbank holen. Das geht mit den ADO.NET Klassen schon ganz nett, aber doch immer noch sehr kompliziert, und jetzt gucken wir einmal, wie einfach das in Linq ist. Ich schreibe jetzt erstmal etwas - wir schauen uns das später an, was es genau ist. Ich kann jetzt hier hingehen und jetzt formuliere ich - mehr oder weniger fast in englischer Prosa - was ich für Daten haben möchte: var data = from c in db.Contact where c.Category.Name == "Freunde" select c; - Also von einer Variable "C" nennen wir sie einmal, aus der Tabelle "Db." "Contact" möchten wir bei all den Stellen, bei denen die Kategorie, und davon der Name == "Freunde" ist, möchten wir gerne die Kategorie haben, also "C". Das war alles. Das ist jetzt ein sog. Linq-Statement und in diesem Linq-Statement haben wir - zum einen in Prosa, zum anderen in C#-Sprache nennen wir es mal, also so ein Mischmasch daraus - haben wir eine Anfrage an unsere Datenbank gestellt, das wird jetzt im Hintergrund von Linq umgewandelt. Es wird geguckt, welche Klasse entspricht welcher Entität, und daraus wird dann so ein Datenbank verregeneriert. Dann holt er sich die Daten aus der Datenbank und wir bekommen sie in Form von richtigen Objekten zurückgeliefert. Man merkt quasi im Prinzip noch nicht mal, dass ich hier mit einer Datenbank arbeite. Dazu lassen wir uns jetzt einmal hier oben diese Daten ausgeben. Dazu nutzen wir hier eine ganz normale "For"-Schleife, schreiben uns also die "For"-Schleife, wir sagen: for (int i = 0; i

Visual C# 2011 Grundkurs

Steigen Sie in die C#-Programmierung ein und lernen Sie sowohl die Grundlagen der Sprache C# als auch die Entwicklungsumgebung Visual Studio 2010 und .NET-Framework kennen.

7 Std. 28 min (81 Videos)
Derzeit sind keine Feedbacks vorhanden...
 
Hersteller:
Software:
Visual Studio Visual Studio 2010
Exklusiv für Abo-Kunden
Erscheinungsdatum:27.06.2011

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!