O'Reilly logo

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Programmieren mit dem ADO.NET Entity Framework

Book Description

Dieses Buch enthält das essentielle Wissen zur Arbeit mit dem ADO.NET Entity Framework. Dies bedeutet keine einfache Auflistung und Erklärung von Eigenschaften, sondern Konzentration auf praxisnahe Beispiele und Szenarien. Sie erfahren, wie Sie Ihr Anwendungsmodell mithilfe des Entity Frameworks mit Ihren Datenbankschema verbinden können und wie Sie objektrelationales Management am effektivsten einsetzen. Ebenso werden die dazu nötigen Grundlagen in LINQ (Language Integrated Query) und Entity SQL-Abfragen erläutert.

Table of Contents

  1. Dedication
  2. Vorwort
    1. Für wen ist dieses Buch?
    2. Warum dieses Buch?
    3. Wie ist es aufgebaut?
    4. Meine Dienstleistungen: Schulung, Consulting & Co.
    5. Danksagung
  3. 1. Einführung
    1. Was ist ein O/R-Mapper und wozu braucht man ihn?
    2. Architektur des ADO.NET Entity Framework
    3. Das Entitätenmodell
      1. Modellbrowser
    4. Wichtige Bestandteile des EDM
      1. Objektkontext
      2. Entitäten
      3. Partielle Entitätenklassen
      4. Eigenschaften einer Entität
        1. Abstract
        2. Zugriff (Access)
        3. Basistyp (Base Type)
        4. Dokumentation (Documentation)
        5. Entitätsname (Entity Set Name)
        6. Name
        7. Skalare Eigenschaft
        8. Parallelitätsmodus
        9. Standardwert (Default Value)
        10. Dokumentation (Documentation)
        11. Entitätsschlüssel (Entity Key)
        12. Feste Länge (Fixed Length)
        13. Getter
        14. Maximale Länge (Max Length)
        15. Name
        16. Nullable
        17. Präzision (Precision)
        18. Setter
        19. StoreGeneratedPattern
        20. Type
        21. Unicode
        22. Komplexe Eigenschaften
        23. Navigationseigenschaften
      5. Beziehungen
      6. Lazy Loading
      7. Mappings
        1. Tabellenmappings
        2. Eigene Prozeduren für das Einfügen, Ändern und Löschen
      8. Prozeduren/Funktionen
        1. Skalare
        2. Komplex
        3. Entität
    5. Praktischer Entwurf eines Entitätenmodells
      1. Model-first-Ansatz
      2. Database-first-Ansatz
      3. Welcher Ansatz ist der richtige?
    6. T4-Vorlagen
    7. Metadata Workspace
      1. Physikalisches Modell
      2. Konzeptionelles Modell
    8. Windows Workflow Foundation
  4. 2. Grundlagen
    1. Das Entitätenmodell
      1. Codegenerierung
      2. Physikalisches Modell
      3. Konzeptionelles Modell
      4. Mapping
      5. Metadaten-Arbeitsbereich (Metadata Workspace)
    2. Entitätenmodell erstellen und bearbeiten
      1. Model-first-Ansatz
      2. Database-first-Ansatz
      3. Modell aktualisieren
      4. Im gleichen Projekt verwenden
      5. In einem anderen Projekt verwenden
    3. Der grafische Designer
    4. Der Modellbrowser
    5. Bausteine des Entitätenmodells
      1. Entitäten
        1. Primärschlüssel
        2. Künstliche Primärschlüssel
        3. Natürliche Primärschlüssel
        4. Auswirkungen auf den erzeugten Code
        5. Skalare Eigenschaften
        6. Komplexe Eigenschaften
        7. Navigationseigenschaften
        8. Navigation zu einer Auflistung
        9. Navigation zu einem einzelnen Element
        10. Tabellenmappings
        11. Eigene Prozeduren zum Laden, Speichern, Löschen
      2. Objektkontext
        1. Objektkontext erzeugen
        2. Abfragen ausführen und Änderungen speichern
        3. Entität erstellen
        4. Entität löschen
        5. Datenbank erstellen/löschen
      3. ObjectStateManager
        1. Speichern in der Persistenzschicht
        2. Hinzufügen/Entfernen (Attach/Detach)
      4. RelationshipManager
      5. Komplexe Typen
      6. Zuordnungen
        1. Zuordnungen modifizieren
        2. Multiplizitäten
        3. 0..1 (Null oder eine)
        4. 1 (Eine)
        5. * (Viele)
        6. *:*-Zuordnungen bzw. m:n-Relationen
        7. Fremdschlüsseleinschränkung
        8. Navigationseigenschaften
        9. Allgemein
        10. Codegenerierung
        11. Navigation
      7. Vererbung
        1. Ein Blick in den Quellcode
        2. Ein Blick in die Datenbank
      8. Funktionsimporte
        1. Kein
        2. Skalare
        3. Komplexe
        4. Entitäten
        5. Modellbrowser
        6. Aufrufe
        7. Rückgabeparameter
        8. Funktionsimportmappings
    6. Datenanbieter
      1. Abfragen
        1. LINQ
        2. Entity SQL
      2. Transaktionen
  5. 3. Vertiefender Blick ins Detail
    1. Genereller Aufbau der Designer-Code-Klassen
      1. Objektkontext
        1. Konstruktoren
        2. Partielle Methoden
        3. AddTo<Entitätenname>()-Methoden
        4. Prozeduren/Funktionsimporte
        5. Rückgabetypen
        6. Kein
        7. Skalare
        8. Komplex
        9. Entität
      2. Entitäten
        1. Factory-Methode/Konstruktoren
        2. Partielle Methoden
        3. Primitive Eigenschaften
        4. Komplexe Eigenschaften
        5. Navigationseigenschaften
      3. Komplexe Typen
    2. Basisklassen
      1. ComplexObject
      2. EntityObject
      3. ObjectContext
    3. Attribute
      1. BrowsableAttribute
      2. DataContractAttribute
      3. DataMemberAttribute
      4. EdmComplexPropertyAttribut
      5. EdmEntityTypeAttribute
      6. EdmRelationshipAttribute
      7. EdmRelationshipNavigationPropertyAttribute
      8. EdmScalarPropertyAttribute
      9. EdmSchemaAttribute
      10. SerializableAttribute
      11. SoapIgnoreAttribute
      12. XmlIgnoreAttribute
    4. Metadata Workspace
      1. Physikalisches Speichermodell
      2. Konzeptionelles Modell
      3. Mapping
      4. SSDL, CSDL und MSL ohne Visual Studio erstellen
        1. EDM-Generator
        2. Per Code
  6. 4. LINQ to Entities
    1. LINQ – eine Einführung
      1. Grundbegriffe
        1. Varianten
        2. Operatoren
        3. Sequenzen
        4. Verzögerte Ausführung
        5. Verzögerte Ausführung umgehen
        6. Wiederholung der Ausführung
        7. LINQ vs. Methodensyntax und gemischte Syntax
        8. Generelles Vorgehen
        9. Parallelitätsverletzung
        10. Schnittstellen
        11. IEnumerable-Schnittstelle
        12. IQueryable-Schnittstelle
    2. Einführung LINQ-Operatoren
    3. Projektionsoperatoren
      1. Select
      2. SelectMany
    4. Filteroperatoren
      1. Where
      2. OfType
    5. Sortierungsoperatoren
      1. OrderBy/OrderBy...Descending
      2. ThenBy/ThenBy...Descending
      3. Reverse
    6. Gruppierungsoperator
      1. GroupBy
    7. Join-Operatoren
      1. Join
      2. GroupJoin
    8. Mengenoperatoren
      1. Distinct
      2. Union
      3. Intersect
      4. Except
      5. Zip
    9. Aggregationsoperatoren
      1. Count/LongCount
      2. Sum
      3. Min/Max
      4. Average
      5. Aggregate
      6. Generierungsoperatoren
        1. Range
      7. Repeat
      8. Empty
    10. Quantifizierungsoperatoren
      1. All
      2. Any
      3. Contains
      4. Aufteilungsoperatoren
        1. Take
      5. TakeWhile
      6. Skip
      7. SkipWhile
    11. Elementoperatoren
      1. First/Last
      2. FirstOrDefault/LastOrDefault
      3. ElementAt
      4. ElementAtOrDefault
      5. Single
      6. SingleOrDefault
      7. DefaultIfEmpty
    12. Konvertierungsoperatoren
      1. ToArray
      2. ToList
      3. ToDictionary
      4. ToLookup
      5. AsEnumerable
      6. AsParallel
      7. AsQueryable
      8. Cast
    13. Sonstige Operatoren
      1. Concat
      2. Equal
  7. 5. Entity SQL
    1. Grundlagen
      1. Nur Abfrage von Daten möglich
      2. Entity SQL im Einsatz
        1. System.Data.EntityClient
        2. Komplette Entitäten abfragen
        3. Einzelne Werte abfragen
        4. VALUE
    2. Unterschiede zu T-SQL
      1. Auflistungen, Entitäten und Eigenschaften
      2. Bezugname des Entitätenmodells
      3. Groß- und Kleinschreibung
        1. Schlüsselwörter, Operatoren und Funktionen
        2. Entitäten und Eigenschaften
      4. Alias-Pflicht für Entitäten
      5. Eigenschaften müssen voll qualifiziert benannt werden
      6. Keine Unterstützung von »*«
      7. Verallgemeinerte Linkskorrelation
    3. Datentypen
      1. Primitive Datentypen
    4. Sprachelemente
      1. Kommentare
      2. Literale
        1. NULL
        2. Boolean
        3. Ganzzahl, Integer
        4. Festkommazahl, Decimal
        5. Gleitkommawert, Double
        6. Zeichenfolge, String
        7. DateTime
        8. Time
        9. DateTimeOffset
        10. Binary
        11. Guid
      3. Parameter
      4. Werteauswahl
      5. Filter
        1. Logische Operatoren
        2. Priorität der logischen Operatoren
        3. Vergleichsoperatoren
        4. Mustervergleiche mit LIKE
        5. Nach reservierten Platzhalterzeichen suchen (ESCAPE)
        6. Bereichsprüfungen mit dem BETWEEN-Operator
        7. Prüfen auf NULL mit dem IS NULL-Operator
        8. IS OF/IS NOT OF
        9. OFTYPE
      6. Referenzoperatoren
        1. NAVIGATE
        2. DEREF
        3. REF
        4. CREATEREF
      7. KEY
      8. Mengenoperatoren
      9. Priorität von Mengenoperatoren
        1. UNION
        2. UNION DISTINCT
        3. UNION ALL
        4. INTERSECT
        5. EXCEPT
        6. EXISTS
        7. NOT EXISTS
        8. OVERLAPS
        9. NOT OVERLAPS
        10. IN-Operator
        11. ANYELEMENT
        12. SET
        13. FLATTEN
      10. Sortierung
      11. LIMIT
      12. TOP
      13. SKIP
      14. Paging
      15. Gruppierung
    5. Funktionen
      1. Aggregate
        1. Avg()
        2. BigCount()
        3. Count()
        4. Min()/ Max()
        5. StDev()
        6. StDevP()
        7. Sum()
        8. Var()
        9. VarP()
      2. Mathematische Funktionen
        1. Abs()
        2. Ceiling()
        3. Floor()
        4. Round()
        5. Power()
        6. Truncate()
      3. Zeichenfolgenfunktionen
        1. Concat()
        2. Contains()
        3. EndsWith() und StartsWith()
        4. IndexOf()
        5. Left() und Right()
        6. Length()
        7. Trim(), LTrim() und RTrim()
        8. Replace()
        9. Reverse()
        10. Substring()
        11. ToUpper() und ToLower()
      4. Datum- und Uhrzeitfunktionen
        1. AddNanoseconds(), AddMicroseconds(), AddMilliseconds(), AddSeconds(), AddMinutes(), AddHours()
        2. AddDays(), AddMonths(), AddYears()
        3. CreateDateTime()
        4. CreateDateTimeOffset()
        5. CreateTime()
        6. CurrentDateTime(), CurrentDateTimeOffset(), CurrentUtcDateTime()
        7. Millisecond(), Second(), Minute(), Hour()
        8. Day(), Month(), Year()
        9. DayOfYear()
        10. DiffNanoseconds(), DiffMicroseconds(), DiffMilliseconds(), DiffSeconds(), DiffMinutes(), DiffHours()
        11. DiffDays(), DiffMonths(), DiffYears()
        12. GetTotalOffsetMinutes()
        13. Truncate()
      5. Binärfunktionen
        1. BitWiseAnd()
        2. BitWiseNot()
        3. BitWiseOr()
        4. BitWiseXor()
      6. Sonstige Funktionen
        1. CASE...WHEN
        2. Cast()
        3. TREAT
        4. MULTISET
        5. ROW
  8. 6. Die EntityClient-API
    1. Übersicht
    2. Basisklassen und Schnittstellen
    3. EntityConnection
      1. Konstruktoren
      2. Zustand der Verbindung
      3. Ausnahmen
        1. EntityException
        2. MetadataException
        3. InvalidOperationException
      4. Ereignisse
      5. Wichtige Eigenschaften und Methoden
      6. Beispiele
        1. Verbindungsaufbau über die Konfiguration
        2. Verbindungsaufbau per Objektkontext und MetadataWorkspace
    4. EntityConnectionStringBuilder
      1. Konstruktoren
      2. Ausnahmen
      3. Ereignisse
      4. Wichtige Eigenschaften und Methoden
      5. Beispiele
        1. Einsatz beim Verbindungsaufbau
        2. Zugriff auf eine Verbindungszeichenfolge aus der Konfiguration
        3. Mit datenanbieterspezifischen Verbindungszeichenfolgen arbeiten
        4. Einem Objektkontext eine Verbindungszeichenfolge übergeben
    5. EntityTransaction
      1. Isolationsgrad
      2. Konstruktoren
      3. Ausnahmen
      4. Ereignisse
      5. Wichtige Eigenschaften und Methoden
      6. Beispiele
        1. Standardisolationsgrad des Datenanbieters ermitteln
        2. Isolationsgrad für Transaktion festlegen und für Abfrage verwenden
    6. TransactionScope und Transaction
      1. Allgemeine Verwendung
      2. Zeitliche Lebensdauer für Transaktion festlegen
      3. Konstruktoren
        1. TransactionScope
        2. TransactionScopeOption
        3. TransactionOptions
        4. Transaction
      4. Ereignisse
        1. TransactionScope
        2. Transaction
      5. Wichtige Eigenschaften und Methoden
        1. TransactionScope
        2. Transaction
      6. Beispiele
        1. Isolationsgrad der umgebenden Transaktion festlegen
        2. Informationen über die umgebende Transaktion abrufen
    7. EntityCommand
      1. Entity SQL-Abfragen ausführen
        1. ExecuteNonQuery()
        2. ExecuteScalar()
        3. ExecuteReader()
      2. Prozeduren und Funktionen ausführen
      3. Rückgabewert und Rückgabeparameter bei Prozeduren
      4. Konstruktoren
      5. EntityConnection.CreateCommand()
      6. Ausnahmen
        1. EntityCommandCompilationException
        2. EntityCommandExecutionException
      7. Ereignisse
      8. Wichtige Eigenschaften und Methoden
      9. Beispiele
        1. Ad-hoc-Abfrage mit Parameter ausführen
        2. Prozedur mit Parametern ausführen
    8. EntityParameter
      1. Konstruktoren
      2. Der Datentyp des Parameters
      3. Die Richtung des Parameters
      4. Die AddWithValue()-Methode
      5. NULL an den Datenanbieter übergeben
      6. Ausnahmen
      7. Ereignisse
      8. Wichtige Eigenschaften und Methoden
      9. Beispiel
        1. Einer Abfrage einen Parameter hinzufügen
    9. EntityParameterCollection
      1. Konstruktoren
      2. Ereignisse
      3. Ausnahmen
      4. Wichtige Eigenschaften und Methoden
      5. Beispiele
    10. EntityDataReader
      1. Wichtige Unterschiede und Einschränkungen
        1. CommandBehavior.SequentialAccess zwingend
        2. Nur eine Ergebnismenge
      2. Abfrage
        1. Abfragen aller Eigenschaften einer Entität
        2. Abfrage einzelner Eigenschaften/Werte und Ausdrücke
      3. CommandBehavior
      4. Auf Werte zugreifen
      5. Mit NULL richtig umgehen
      6. Konstruktoren
      7. Ereignisse
      8. Ausnahmen
      9. Wichtige Eigenschaften und Methoden
      10. Beispiel
        1. Informationen über Eigenschaften und alle Daten ausgeben
    11. Ausnahmen
      1. EntityException
        1. Konstruktoren
        2. Wichtige Eigenschaften und Methoden
      2. EntitySqlException
        1. Konstruktoren
        2. Wichtige Eigenschaften und Methoden
  9. 7. POCOs
    1. Das Problem
    2. Die Lösung
      1. Vorbereitung
        1. Entitätenmodell
        2. POCO-Entitätengenerator
      2. Codegenerierungselement
    3. Der praktische Einsatz
  10. 8. Selftracking Entities
    1. Das Problem
    2. Die Lösung
      1. Vorbereitung
        1. Entitätenmodell
        2. Codegenerierungselement
    3. Der praktische Einsatz
  11. 9. Code Only
    1. Das Problem & die Lösung
    2. Der praktische Einsatz
      1. Projekt erstellen
      2. Verweise
      3. Entitätenklassen
        1. Objektkontext
        2. Konfigurationen der Entitäten
        3. TestRun
  12. 10. T4-Vorlagen
    1. Einsatzgebiete
    2. Funktionsweise
    3. Praxis
    4. T4-Tools
  13. Stichwortverzeichnis
  14. Copyright