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 39 Entitätsaktualisierung und Zustandsverwaltung
Pfeil 39.1 Aktualisieren von Entitäten
Pfeil 39.1.1 Entitäten ändern
Pfeil 39.1.2 Hinzufügen neuer Entitäten
Pfeil 39.1.3 Löschen einer Entität
Pfeil 39.2 Der Lebenszyklus einer Entität im Objektkontext
Pfeil 39.2.1 Der Zustand einer Entität
Pfeil 39.2.2 Das Team der Objekte im Überblick
Pfeil 39.2.3 Neue Entitäten im Objektkontext
Pfeil 39.2.4 Die Zustände einer Entität
Pfeil 39.2.5 Zusätzliche Entitäten in den Datencache laden
Pfeil 39.2.6 Die Zustandsverfolgung mit »MergeOption« steuern
Pfeil 39.3 Das »ObjectStateEntry«-Objekt
Pfeil 39.3.1 Die Current- und Originalwerte abrufen
Pfeil 39.3.2 Die Methode »TryGetObjectStateEntry«
Pfeil 39.3.3 Abrufen bestimmter Gruppen
Pfeil 39.3.4 Die Methode »GetModifiedProperties«
Pfeil 39.4 Die Klasse »EntityKey«
Pfeil 39.4.1 Die Methoden »GetObjectByKey« und »TryGetObjectByKey«
Pfeil 39.5 Komplexere Szenarien
Pfeil 39.5.1 Die Methode »ChangeState«
Pfeil 39.5.2 Die Methoden »ApplyCurrentChanges« und »ApplyOriginalChanges«

Galileo Computing - Zum Seitenanfang

39.4 Die Klasse »EntityKey«Zur nächsten Überschrift

Jede vom Objektkontext verwaltete Entität hat ein korrespondierendes ObjectStateEntry-Objekt, in dem die aktuellen und originalen Werte der Entitätseigenschaften verfolgt werden. Der Zustand der Entitäten wird von einem ObjectStateManager-Objekt verwaltet, das dem Objektkontext zugeordnet ist.

Handelt es sich bei der Entität und dem ObjectStateEntry-Objekt um korrespondierende Objekte, werden beide über dasselbe EntityKey-Objekt miteinander verknüpft. Im Entity Data Model hat ein EntityKey dieselbe Aufgabe, die einem Primärschlüssel in einer relationalen Datenbank zukommt, nämlich Eindeutigkeit zu gewährleisten. Das EntityKey-Objekt wird automatisch erstellt, wenn die Abfrage ein Objekt zurückliefert und materialisiert. In der Regel entspricht der von EntityKey beschriebene Wert dem Wert in der Primärschlüsselspalte oder der zugrunde liegenden Tabelle.

EntityKey-Objekte weisen nicht allzu viele spezifische Merkmale auf. EntityKeyValues und IsTemporary sind die beiden Eigenschaften, die an dieser Stelle genannt werden sollen. EntityKeyValues liefert ein Array von EntityKeyMember-Objekten. Eigentlich logisch, denn ein Schlüssel kann auch aus mehreren einzelnen Schlüsseln zugeordnet werden. IsTemporary spielt im Zusammenhang mit dem Hinzufügen neuer Entitäten eine Rolle. Erzeugen Sie nämlich eine neue Entität und ordnen diese dem Objektkontext zu, wird die neue Entität dem ObjectStateManager mit einem temporären Schlüssel bekannt gegeben.

Sowohl Entitäten als auch ObjectStateEntry-Objekte verfügen über die Eigenschaft EntityKey, mit der das zugeordnete EntityKey-Objekt abgerufen werden kann.


Galileo Computing - Zum Seitenanfang

39.4.1 Die Methoden »GetObjectByKey« und »TryGetObjectByKey«Zur vorigen Überschrift

Die weiter oben behandelten Methoden GetObjectStateEntry und TryGetObjectStateEntry setzen voraus, dass sich die entsprechende Entität bereits im Datencache befindet, und liefern als Resultat des Aufrufs ein ObjectStateEntry-Objekt zurück.

GetObjectByKey und TryGetObjectByKey hingegen liefern auf Grundlage eines Keys tatsächlich die Referenz auf eine Entität zurück. Sollte sich diese nicht im Objektkontext befinden, wird eine Abfrage gegen die Datenbank abgesetzt. Wird der angegebene Schlüssel auch in der Datenbank nicht gefunden, löst GetObjectByKey eine Ausnahme vom Typ ObjectNotFoundException aus, während TryGetObjectByKey einen booleschen Wert zurückliefert, der Auskunft gibt, ob das Objekt mit dem angegebenen EntityKey gefunden wurde (true) oder nicht (false). Im folgenden Listing wird der Einsatz der Methode TryGetObjectByKey demonstriert, bei dem eine Entität angefordert wird, die sich nicht im Cache befindet.

using (NorthwindEntities context = new NorthwindEntities())
{
EntityKey key = new EntityKey("NorthwindEntities.Products",
"ProductID", 92);
object @object;
if (context.TryGetObjectByKey(key, out @object))
{
Product product = (Product)@object;
Console.WriteLine(product.ProductName);
}
else
Console.WriteLine("Kein passendes Objekt zum Löschen gefunden.");
}

Listing 39.15 Ein Objekt mit der Methode »TryGetObjectByKey« abrufen

Um eine Entität auf Basis ihres Keys abzurufen, muss dieser erstellt werden. Dazu wird die Klasse EntityKey instanziiert, deren Konstruktor mehrfach überladen ist. Im einfachsten Fall geben Sie zuerst die Entitätsmenge als Zeichenfolge an, die durch Voranstellung des EntityContainers qualifiziert werden muss. Das zweite Argument gibt das Schlüsselfeld als Zeichenfolge an und das dritte den Schlüsselwert.

Das gebildete EntityKey-Objekt wird an den ersten Parameter der Methode TryGetObjectByKey übergeben. Der zweite Parameter ist ein out-Parameter, in den die Methode die gefundene Entität einträgt. Sie können nun, wie im Listing, Eigenschaften abfragen, Sie können die Entität aber auch editieren oder löschen.



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