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 38 Datenabfragen des Entity Data Models (EDM)
Pfeil 38.1 Abfragen mit LINQ to Entities
Pfeil 38.1.1 Allgemeine Begriffe in LINQ
Pfeil 38.1.2 Einfache Abfragen
Pfeil 38.1.3 Navigieren in Abfragen
Pfeil 38.1.4 Aggregatmethoden
Pfeil 38.1.5 Joins in LINQ definieren
Pfeil 38.1.6 In Beziehung stehende Daten laden
Pfeil 38.2 Abfragen mit Entity SQL
Pfeil 38.2.1 Ein erstes Beispiel mit Entity SQL
Pfeil 38.2.2 Die fundamentalen Regeln der Entity-SQL-Syntax
Pfeil 38.2.3 Filtern mit Entity SQL
Pfeil 38.2.4 Parametrisierte Abfragen
Pfeil 38.3 Der EntityClient-Provider
Pfeil 38.3.1 Verbindungen mit »EntityConnection«
Pfeil 38.3.2 Die Klasse »EntityCommand«
Pfeil 38.4 Abfrage-Generator-Methoden (QueryBuilder-Methoden)
Pfeil 38.5 SQL-Direktabfragen

Galileo Computing - Zum Seitenanfang

38.4 Abfrage-Generator-Methoden (QueryBuilder-Methoden)

In einem großen Teil dieses Kapitels haben wir uns den Abfragen mit LINQ to Entities und Entity SQL gewidmet. Sie können aber eine Mischung aus beiden Abfragetechniken verwenden, die Methoden der Klasse ObjectQuery verwenden. Diese Methoden verwenden Entity-SQL-Fragmente und ersetzen mit diesen die Lambda-Ausdrücke.

Sehen wir uns dazu sofort ein Beispiel an, das uns alle Artikel zurückgibt, die einen bestimmten Preis übersteigen:

var query = context.Products
.Where("it.UnitPrice >= 50");

Es fällt bei dieser Abfrage auf, dass der Methode Where kein Lambda-Ausdruck übergeben wird, sondern stattdessen eine Zeichenfolge, die an Entity SQL erinnert. Where ist hier die sogenannte QueryBuilder-Methode, die zu der Klasse ObjectQuery gehört. Um es ganz deutlich zu sagen: Es handelt sich dabei nicht um eine Erweiterungsmethode.

Ungewöhnlich ist die Verwendung des Präfixes it. Dabei handelt es sich um eine implizite Festlegung der Referenz auf das ObjectQuery-Objekt.

In der Klasse ObjectQuery sind einige QueryBuilder-Methoden definiert: Where, Select, GroupBy, OrderBy, Skip – um nur einige zu nennen. Allerdings wird auch nicht jede LINQ-Erweiterungsmethode durch eine QueryBuilder-Methode ersetzt. Sollten Sie sich für alle QueryBuilder-Methoden interessieren, informieren Sie sich bitte in der Dokumentation der Klasse ObjectQuery.

Lambda-Ausdrücke übergeben Parameter an eine Methode. Mit den QueryBuilder-Methoden werden die Parameter nun durch Zeichenfolgen auf Basis von Entity SQL beschrieben. Das ist der wesentliche Unterschied zwischen den QueryBuilder-Methoden und LINQ to Entities.

Ein etwas aufwendigeres Beispiel beschreibt Listing 38.27. Es werden zuerst Daten abgefragt, die als Parameter der Abfrage dienen. Damit wird die Methode Where ausgeführt.

using(NorthwindEntities context= new NorthwindEntities())
{
Console.Write("Preise ab: ");
decimal price = Convert.ToDecimal(Console.ReadLine());
Console.Write("Kategorie-ID: ");
int catID = Convert.ToInt32(Console.ReadLine());

var query = context.Products
.Where("it.Unitprice > @price AND it.CategoryID==@cat",
new ObjectParameter("price", price),
new ObjectParameter("cat", catID))
.Select("it.ProductName, it.UnitPrice");

foreach (var item in query)
Console.WriteLine("{0,-35}{1}", item.GetValue(0), item.GetValue(1));
}

Listing 38.27 QueryBuilder-Methoden

Sie können der Where-Methode beliebig viele Parameter übergeben. Jeder Parameter muss aber durch ein ObjectParameter-Objekt genau definiert werden. Die entsprechenden Referenzen werden an den zweiten Parameter der Where-Methode übergeben, bei dem es sich um einen params-Parameter handelt. Das Bemerkenswerte ist dabei die Tatsache, dass die Typen der Parameter korrekt sein müssen.

Listing 38.27 enthält mit Select noch eine weitere QueryBuilder-Methode, mit der in unserem Beispiel die Eigenschaften ProductName und UnitPrice in die Ergebnismenge projiziert werden.



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