Galileo Computing < openbook > Galileo Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Vorwort zur 6. Auflage
1 Allgemeine Einführung in .NET
2 Grundlagen der Sprache C#
3 Das Klassendesign
4 Vererbung, Polymorphie und Interfaces
5 Delegates und Ereignisse
6 Strukturen und Enumerationen
7 Fehlerbehandlung und Debugging
8 Auflistungsklassen (Collections)
9 Generics – Generische Datentypen
10 Weitere C#-Sprachfeatures
11 LINQ
12 Arbeiten mit Dateien und Streams
13 Binäre Serialisierung
14 XML
15 Multithreading und die Task Parallel Library (TPL)
16 Einige wichtige .NET-Klassen
17 Projektmanagement und Visual Studio 2012
18 Einführung in die WPF und XAML
19 WPF-Layout-Container
20 Fenster in der WPF
21 WPF-Steuerelemente
22 Elementbindungen
23 Konzepte von WPF
24 Datenbindung
25 Weitere Möglichkeiten der Datenbindung
26 Dependency Properties
27 Ereignisse in der WPF
28 WPF-Commands
29 Benutzerdefinierte Controls
30 2D-Grafik
31 ADO.NET – Verbindungsorientierte Objekte
32 ADO.NET – Das Command-Objekt
33 ADO.NET – Der SqlDataAdapter
34 ADO.NET – Daten im lokalen Speicher
35 ADO.NET – Aktualisieren der Datenbank
36 Stark typisierte DataSets
37 Einführung in das ADO.NET Entity Framework
38 Datenabfragen des Entity Data Models (EDM)
39 Entitätsaktualisierung und Zustandsverwaltung
40 Konflikte behandeln
41 Plain Old CLR Objects (POCOs)
Stichwort

Download:
- Beispiele, ca. 62,4 MB

Buch bestellen
Ihre Meinung?

Spacer
Visual C# 2012 von Andreas Kühnel
Das umfassende Handbuch
Buch: Visual C# 2012

Visual C# 2012
Rheinwerk Computing
1402 S., 6., aktualisierte und erweiterte Auflage 2013, geb., mit DVD
49,90 Euro, ISBN 978-3-8362-1997-6
Pfeil 37 Einführung in das ADO.NET Entity Framework
Pfeil 37.1 Kritische Betrachtung von ADO.NET
Pfeil 37.2 Ein erstes Entity Data Model (EDM) erstellen
Pfeil 37.3 Das Entity Data Model im Designer
Pfeil 37.3.1 Die übergeordneten Eigenschaften einer Entität
Pfeil 37.3.2 Eigenschaften eines Entitätsobjekts
Pfeil 37.3.3 Assoziationen im Entity Data Model
Pfeil 37.3.4 Der Kontext der Entitäten
Pfeil 37.4 Der Aufbau des Entity Data Models
Pfeil 37.5 Die Klassen des Entity Data Models (EDM)
Pfeil 37.5.1 Die Entitätsklassen
Pfeil 37.5.2 Der ObjectContext
Pfeil 37.6 Die Architektur des Entity Frameworks
Pfeil 37.6.1 Object Services
Pfeil 37.6.2 Die Schichten des Entity Frameworks

Galileo Computing - Zum Seitenanfang

37.3 Das Entity Data Model im DesignerZur nächsten Überschrift


Galileo Computing - Zum Seitenanfang

37.3.1 Die übergeordneten Eigenschaften einer EntitätZur nächsten ÜberschriftZur vorigen Überschrift

Jede Entität wird im Entity Data Model durch allgemeine Eigenschaften spezifiziert. Damit sind nicht die Eigenschaften gemeint, die die Daten eines bestimmten Objekts vom Typ der Entität speichern (gewissermaßen also die Spalten einer Datenzeile), sondern die Eigenschaften, die den Entitätstyp ganzheitlich beschreiben. Wenn Sie im Designer die Entität Product markieren und dann das Eigenschaftsfenster öffnen, werden Sie diese allgemeinen Eigenschaften sehen (siehe Abbildung 37.5).

Abbildung

Abbildung 37.5 Die Entität »Product« im Eigenschaftsfenster

  • Abstrakt: Im Entity Framework können Sie innerhalb des EDM die Vererbung benutzen, um Entitäten miteinander in eine Vererbungsbeziehung zu setzen. Mit dieser Eigenschaft lässt sich festlegen, ob die Entität als abstrakte Basisklasse ihre Eigenschaften nur den ableitenden Entitäten zur Verfügung stellen soll.
  • Basistyp: Handelt es sich bei der Entität um eine ableitende Klasse, gibt diese Eigenschaft die Basisklasse an.
  • Dokumentation: Diese Eigenschaft gestattet es, entweder eine kurze oder lange (oder beides) Beschreibung der Entität hinzuzufügen. Die kurze Beschreibung entspricht dem <summary>-Element eines XML-Kommentars, die lange wird in die XML-Dokumentationsdatei des Ausgabeverzeichnisses geschrieben, wenn die entsprechende Option im Projekteigenschaftsfenster aktiviert ist.
  • Name: Diese Eigenschaft gibt den Bezeichner der Entität an. Sollten Sie im Assistenten in Abbildung 37.4 die Option Generierte Objektnamen in den Singular oder Plural setzen nicht ausgewählt haben, würde ein pluralisierender Bezeichner generiert, beispielsweise Products.
  • Name der Entitätenmenge: Diese Eigenschaft legt fest, wie die Eigenschaft heißt, mit der später eine Menge vom Typ der jeweiligen Entität im Code abgefragt werden kann.
  • Zugriff: Es sollte eigentlich klar sein, dass mit dieser Eigenschaft die Sichtbarkeit der Entität festgelegt wird.

Galileo Computing - Zum Seitenanfang

37.3.2 Eigenschaften eines EntitätsobjektsZur nächsten ÜberschriftZur vorigen Überschrift

Eine Entität, wie wir sie im Designer des EDM sehen, kann man als Container verstehen, der drei verschiedene Eigenschaftstypen enthalten kann:

  • skalare Eigenschaften
  • komplexe Eigenschaften
  • Navigationseigenschaften

Skalare Eigenschaften

Unter den skalaren Eigenschaften sind diejenigen zu verstehen, die im Grunde genommen die Spalten einer Datenbanktabelle abbilden. Dabei wird jede Spalte der Tabelle in der Entität durch eine Eigenschaft dargestellt.

Jede Spalte einer Tabelle wird ihrerseits durch eine Reihe von Eigenschaften spezifiziert, beispielsweise durch einen Datentyp, ob sie Null zulässt oder eine feste Länge hat. Sie können sich die Eigenschaften einer Spalte (besser sollte ich schreiben, einer skalaren Eigenschaft) im Eigenschaftsfenster der Entwicklungsumgebung ansehen, wenn Sie im Designer eine Eigenschaft selektieren. In Abbildung 37.6 wird das anhand der Eigenschaft ProductName der Entität Product gezeigt.

Abbildung

Abbildung 37.6 Die Eigenschaften der Entitätseigenschaft »ProductName«

In Tabelle 37.1 sind die Eigenschaften der »Spalteneigenschaften« erläutert.

Tabelle 37.1 Die Eigenschaften einer Entitätseigenschaft

Eigenschaft Beschreibung

Dokumentation

Siehe auch die gleichnamige Eigenschaftsbeschreibung in Abschnitt 37.3.1.

Entitätsschlüssel

Diese Eigenschaft gibt an, ob es sich bei der Spalteneigenschaft um den Primärschlüssel handelt. Jede Entität muss mindestens eine solche Eigenschaft haben. Hat die zugrunde liegende Tabelle der Entität einen zusammengesetzten Primärschlüssel, können auch mehrere Entitätseigenschaften die Einstellung Entitätsschlüssel = true haben.

Feste Länge

Diese Eigenschaft gibt vor, ob diese Entitätseigenschaft eine feste Länge aufweist.

Getter / Setter

Mit dieser Eigenschaft wird der Zugriff auf die Entitätseigenschaft festgelegt.

Maximale Länge

Legt die Maximallänge der Entitätseigenschaft fest. Als Werte sind neben einer individuell eingestellten Länge auch (None) und Max möglich.

NULL zulassen

Gibt an, ob die Entitätseigenschaft null zulässt oder nicht.

Parallelitätsmodus

Diese Eigenschaft hängt mit der Aktualisierung zusammen und beschreibt, ob die Eigenschaft während der Aktualisierung überprüft werden soll.

Standardwert

Legt den Standardwert der Entitätseigenschaft fest.

StoreGeneratedPattern

Diese Eigenschaft gibt an, was getan werden soll, wenn eine Datenzeile hinzugefügt oder geändert werden soll.

Typ

Legt den Datentyp der Entitätseigenschaft fest. Abhängig davon, welche Einstellung hier gewählt ist, werden nur die Eigenschaften im Eigenschaftsfenster angezeigt, die im Zusammenhang mit dem Datentyp sinnvoll sind.

Unicode

Diese Eigenschaft ist nur im Zusammenhang mit dem Datentyp String relevant. Hiermit wird festgelegt, ob die Zeichenfolge im Unicode abgelegt werden soll oder nicht.

Komplexe Eigenschaften

Komplexe Typen sind eine Möglichkeit, mehrere skalare Eigenschaften zusammenzufassen. Angenommen, die beiden Entitäten Mitarbeiter und Kundeninformation eines Entity Data Models würden die Adressinformationen von Personen beschreiben, beispielsweise den Namen, den Wohnort und die Straße. Es würde sich anbieten, aus diesen drei Eigenschaften den komplexen Typ Address zu bilden und diesen zu einer Eigenschaft der beiden Entitäten Mitarbeiter und Kundeninformation zu machen.

Komplexe Typen werden als Klassen definiert. Sie können mit komplexen Typen den Code und das Entity Data Model zwar besser strukturieren, sie können aber nicht direkt abgefragt oder separat in der Datenbank gespeichert werden.

Navigationseigenschaften

Widmen wir uns nun der dritten Gruppe der Eigenschaften, den Navigationseigenschaften. Exemplarisch sehen wir uns dazu die Navigationseigenschaft Category in der Entität an. Wie skalare Eigenschaften, so werden auch Navigationseigenschaften durch eigenschaftsspezifische Einstellungen beschrieben, die im Eigenschaftsfenster von Visual Studio angezeigt werden, wenn die entsprechende Navigationseigenschaft im Designer ausgewählt ist (siehe Abbildung 37.7).

Abbildung

Abbildung 37.7 Die Eigenschaften der Navigationseigenschaft »Category«

Navigationseigenschaften beschreiben, wie zu einer in Beziehung (Assoziation) stehenden Entität navigiert wird. Dabei greifen die Navigationseigenschaften auf im Entity Data Model definierte Assoziationen zurück, die die Beziehung zwischen zwei Entitäten exakt beschreiben. In unserem Beispiel lautet der Bezeichner der Beziehung FK_Products_Categories. Die Verknüpfung einer Navigationseigenschaft mit einer bestimmten Assoziation erfolgt mit der Eigenschaft Zuordnung.

Die Eigenschaft Multiplizität gibt an, wie viele Entitäten beim Aufruf der Navigationsmethode als Resultat geliefert werden können. In unserem Beispiel ist es keins, weil ein Produkt nicht zwangsläufig einer Kategorie zugeordnet werden muss, oder genau eins. Der Rückgabetyp ist mit der schreibgeschützten Eigenschaft Rückgabetyp ebenfalls angegeben.

Betrachten wir nun die zweite Entität in unserem EDM: Category. Die Navigationsmethode lautet hier Products und suggeriert uns, dass mit dem Aufruf

Category.Products

eine Liste von Produkten zurückgeliefert wird, unabhängig davon, ob die Liste leer ist, nur ein Produkt oder viele enthält. Die Liste ist dabei vom Typ EntityCollection<T> oder, um es präzise auszudrücken, vom Typ EntityCollection<Product>.


Galileo Computing - Zum Seitenanfang

37.3.3 Assoziationen im Entity Data ModelZur nächsten ÜberschriftZur vorigen Überschrift

Die Beziehung zwischen zwei Tabellen in einer Datenbank wird im Entity Data Model durch Assoziationen, auch als Zuordnung bezeichnet, abgebildet. Navigationseigenschaften benutzen Assoziationen, um von einer Entität auf in Beziehung stehende Entitäten zuzugreifen.

Wir sollten nun einen Blick auf die Zuordnung zwischen den beiden Entitäten Product und Category im Designer werfen. Da Zuordnungen auch durch Eigenschaften beschrieben werden, markieren wir die Zuordnung im Designer und wenden danach unsere Aufmerksamkeit auf das Eigenschaftsfenster, in dem nunmehr die Eigenschaften der Assoziation angezeigt werden (siehe Abbildung 37.8).

Abbildung

Abbildung 37.8 Eigenschaften der Assoziation

Eine Assoziation beschreibt mit End1 und End2 zwei Endpunkte. Bei End1 handelt es sich um den Endpunkt der Assoziation auf Seiten der Entität Category, End2 ist der Endpunkt auf Seiten der Entität Product. Der jeweilige Bezeichner der Endpunkte wird von den Eigenschaften End1-Rollenname und End2-Rollenname festgelegt.

Die Multiplizität des jeweiligen Endpunkts wird mit der Eigenschaft End1-Multiplizität bzw. End2-Multiplizität beschrieben. Wie schon weiter oben erwähnt, können die Endpunkte durch »0..1« (null oder eine), »1« (eine) oder »*« (viele) beschrieben werden. Die Navigationseigenschaft der zu einem Endpunkt zugeordneten Entität legt die Eigenschaft End1-/End2-Navigationseigenschaft fest.


Galileo Computing - Zum Seitenanfang

37.3.4 Der Kontext der EntitätenZur vorigen Überschrift

Wir haben in den letzten Abschnitten einen Blick auf die Entitäten und deren Beziehungen untereinander geworfen. Im Grunde genommen wird noch eine weitere Komponente im Designer dargestellt, die jedoch keine grafische Präsentation hat. Es ist das Entity Model selbst mit allen seinen Eigenschaften zur Generierung und Verwaltung. Sie können sich dessen Eigenschaften im Eigenschaftsfenster anzeigen lassen, indem Sie einfach in den freien Bereich des Designers klicken (siehe Abbildung 37.9).

Auf alle Eigenschaften an dieser Stelle einzugehen würde deutlich zu weit führen. Aber auf eine Eigenschaft muss ich Sie aufmerksam machen. Es ist die Eigenschaft Entitätscontainername, der in unserem Modell auf NorthwindEntities eingestellt ist. Hier wird der Bezeichner des Containers angegeben, von dem standardmäßig alle Entitäten verwaltet werden. Ohne ein Objekt dieses Containers, der vom Typ ObjectContext ist, geht fast nichts, er bildet das Herzstück der EF-Anwendung.

Abbildung

Abbildung 37.9 Eigenschaften des Kontexts



Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.

>> Zum Feedback-Formular
<< zurück
  Zum Katalog
Zum Katalog: Visual C# 2012

Visual C# 2012
Jetzt bestellen


 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchempfehlungen
Zum Katalog: Professionell entwickeln mit Visual C# 2012






 Professionell
 entwickeln mit
 Visual C# 2012


Zum Katalog: Windows Presentation Foundation






 Windows Presentation
 Foundation


Zum Katalog: Schrödinger programmiert C++






 Schrödinger
 programmiert C++


Zum Katalog: C++ Handbuch






 C++ Handbuch


Zum Katalog: C/C++






 C/C++


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo





Copyright © Rheinwerk Verlag GmbH 2013
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Rheinwerk Computing]

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de