Moderne Datenzugriffslösungen mit Entity Framework Core 3.1
Moderne Datenzugriffslösungen mit Entity Framework Core 3.1 (E-Book (PDF) und Programmcodebeispiele (ZIP))
$44.99
Minimal-Preis
$49.99
Empfohlener Preis
Moderne Datenzugriffslösungen mit Entity Framework Core 3.1

Zuletzt aktualisiert: 2020-02-19

Über das Buch

Entity Framework Core 3.1.1 ist der neuste Objekt-Relationale Mapper und die aktuelle Datenzugriffstechnik von Microsoft für .NET Core-basierte Desktop-, Web- und Konsolen-Anwendungen. Das Buch enthält alle wichtigen Szenarien des Datenbankzugriffs auf Microsoft SQL Server, SQLite und Oracle: Konzepte und Installation von Entity Framework Core, Reverse Engineering bestehender Datenbanken und Forward Engineering inkl. Schemamigrationen, Daten lesen und ändern mit LINQ, Dynamic LINQ, API, SQL, Views, Stored Procedures und Table Value Functions, Objektbeziehungen und Ladestrategien, Change Tracking, Protokollierung, Datenänderungskonflikte, Transaktionen, Leistungsoptimierung, asynchrone Programmierung sowie die Zusatzprodukte Entity Framework Core Power Tools, LINQPad, Entity Developer, Entity Framework Profiler, EFPlus und AutoMapper. Auch der Praxiseinsatz von Entity Framework Core in der Softwarearchitektur wird diskutiert und anhand von Fallbeispielen in ASP.NET Core, Universal Windows Platform (UWP) Apps und Xamarin implementiert. Zudem enthält das Buch zahlreiche Tipps und Tricks.

 

Das Buch richtet sich an Softwareentwickler, die bereits grundlegende Erfahrung mit .NET und C# sowie mit relationalen Datenbanken gesammelt haben und nun Entity Framework Core zur Erstellung von performantem und plattformunabhängigem Datenzugriffscode in .NET Core einsetzen wollen. Vorkenntnisse in Vorgängerprodukten wie ADO.NET und dem klassischen ADO.NET Entity Framework oder anderen OR-Mappern sind zum Verständnis des Buchs nicht notwendig.

 

Über den Autor

Dr. Holger Schwichtenberg
Dr. Holger Schwichtenberg
  • Studienabschluss Diplom-Wirtschaftsinformatik an der Universität Essen
  • Promotion an der Universität Essen im Gebiet komponentenbasierter Softwareentwicklung
  • Seit 1996 selbstständig als unabhängiger Berater, Dozent, Softwarearchitekt und Fachjournalist
  • Leiter des Berater- und Dozententeams bei www.IT-Visions.de
  • Leitung der Softwareentwicklung im Bereich Microsoft / .NET bei der 5minds IT-Solutions GmbH & Co. KG (www.5minds.de)
  • Über 65 Fachbücher beim Carl Hanser Verlag, bei O'Reilly, Microsoft Press, APress und Addison-Wesley sowie mehr als 1000 Beiträge in Fachzeitschriften
  • Gutachter in den Wettbewerbsverfahren der EU gegen Microsoft (2006–2009)
  • Ständiger Mitarbeiter der Zeitschriften iX (seit 1999), dotnetpro (seit 2000) und Windows Developer (seit 2010) sowie beim Online-Portal heise.de (seit 2008).
  • Regelmäßiger Sprecher auf nationalen und internationalen Fachkonferenzen (z.B. TechEd, Microsoft IT Forum, BASTA, BASTA-on-Tour, Advanced Developers Conference, .NET-Entwicklerkonferenz, OOP, VS One, Wirtschaftsinformatik, Net.Object Days, Windows Forum, DOTNET-Konferenz, XML-in-Action)
  • Zertifikate und Auszeichnungen von Microsoft: Microsoft Most Valuable Professional (MVP) und Microsoft Certified Solution Developer (MCSD)
  • Thematische Schwerpunkte:
  1. Microsoft .NET Framework, Visual Studio, C#, Visual Basic
  2. Visual Studio, Continous Integration, Continous Delivery, Azure DevOps
  3. .NET-Architektur / Auswahl von .NET-Technologien
  4. Einführung von .NET Framework und Visual Studio / Migration auf .NET
  5. Webanwendungsentwicklung mit IIS, ASP.NET und AJAX
  6. Enterprise .NET, verteilte Systeme/Webservices mit .NET
  7. Relationale Datenbanken, XML, Datenzugriffsstrategien
  8. Objektrelationales Mapping (ORM), insbesondere Entity Framework
  9. Windows PowerShell (WPS) und Windows Management Instrumentation (WMI)
  10. Ehrenamtliche Community-Tätigkeiten:
  11. Vortragender für die International .NET Association (INETA)
  • Betrieb diverser Community-Websites www.dotnetframework.de, www.entwickler-lexikon.de, www.windows-scripting.de, www.aspnetdev.de, u.a.
  • Weblog: http://www.dotnet-doktor.de
  • Kontakt: hs@IT-Visions.de sowie Telefon 0201 649590-0

Pakete

E-Book (PDF) und Programmcodebeispiele (ZIP)

Dieses Paket enthält neben dem E-Book (PDF) auch zahlreiche C#-Programmcodebeispiele für den Einsatz von Entity Framework Core in Form einer Archiv-Datei mit Visual Studio-Projekten für Visual Studio 2019.

  • Deutsch

  • PDF

$44.99
Minimal-Preis
$49.99
Empfohlener Preis
Nur das E-Book (PDF)
  • Deutsch

  • PDF

$39.99
Minimal-Preis
$44.99
Empfohlener Preis

Table of Contents

1 Inhaltsverzeichnis 4 2 Vorwort 20 3 Über den Autor 21 4 Über dieses Buch 22 4.1 Versionsgeschichte dieses Buchs 22 4.2 Bezugsquelle für Aktualisierungen 31 4.3 Geplante Kapitel 31 4.4 Programmiersprache in diesem Buch 32 4.5 Aktion "Buch für Buchrezension" 34 5 Fallbeispiele in diesem Buch 35 5.1 Entitäten 35 5.2 Englische Version des Beispiels 39 5.3 Anwendungsarten in diesem Buch 39 5.4 Hilfsroutinen zur Konsolenausgabe 40 6 Programmcodebeispiel zum Download 46 6.1 Webadresse für Downloads 46 6.2 Übersicht über die Beispiele 46 6.3 Technischer Hinweis zu den Beispielen 48 6.4 Qualitätssicherung der Programmcodebeispiele 48 7 Was ist Entity Framework Core? 50 7.1 Was ist ein Objekt-Relationaler Mapper (ORM)? 50 7.2 ORM in der .NET-Welt 51 7.3 Versionsgeschichte von Entity Framework Core 52 7.4 Unterstützte Betriebssysteme 55 7.5 Unterstützte .NET-Versionen 56 7.6 Unterstützte Visual Studio-Versionen 57 7.7 Unterstützte Datenbanken 58 7.8 Funktionsumfang von Entity Framework Core 59 7.9 Funktionen, die dauerhaft entfallen 60 7.10 Funktionen, die Microsoft noch nachrüsten will (oder bereits hat) 61 7.11 Neue Funktionen in Entity Framework Core 63 7.12 Vergleich zwischen Entity Framework 6.4 und Entity Framework Core 3.1 64 7.13 Verbliebene Schwächen in Entity Framework Core 69 7.14 Neuerungen in Entity Framework Core 3.0 71 7.14.1 Viele Breaking Changes 71 7.14.2 Neue LINQ-to-SQL-Übersetzung 72 7.14.3 Vorbereitung für kommende Versionen 72 7.14.4 Tatsächliche Neuerungen in Entity Framework Core 3.0 73 7.15 Neuerungen in Entity Framework Core 3.1 73 7.16 Ausblick auf Entity Framework Core 5.0 74 7.17 Kritik an der Entwicklungsgeschwindigkeit von Entity Framework Core 76 7.18 Einsatzszenarien für Entity Framework Core 76 7.19 Support für Entity Framework Core 77 8 Installation von Entity Framework Core 79 8.1 NuGet-Pakete 79 8.2 Paketinstallation 81 8.3 Aktualisierung auf eine neue Version 85 9 Konzepte von Entity Framework Core 89 9.1 Vorgehensmodelle bei Entity Framework Core 89 9.2 Artefakte bei Entity Framework Core 92 10 Reverse Engineering bestehender Datenbanken 94 10.1 Reverse Engineering-Werkzeuge 94 10.2 NuGet-Pakete für das Reverse Engineering 94 10.3 Projektstruktur für das Reverse Engineering 95 10.4 Codegenerierung starten 96 10.5 Beispieldatenbank 97 10.6 Generierter Programmcode 99 10.7 Beispiel-Client 109 10.8 Einschränkung der Tabellen beim Reverse Engineering 111 10.9 Trennung von Kontextklasse und Entitätsklassen 111 10.10 Konfiguration der Datenbankverbindung 112 10.10.1 Verwenden von Konfigurationsdateien in .NET Framework 113 10.10.2 Verwenden von Konfigurationsdateien in .NET Core 113 10.10.3 Übergabe der Verbindungszeichenfolge 114 10.10.4 Verwendung von DbContextOptions 115 10.10.5 Eigenes Datenbankverbindungsmanagement 116 10.10.6 Flexible Konfiguration der Kontextklasse 116 10.11 Thread-Sicherheit 117 10.12 EF Core-Kommandozeilenwerkzeug (dotnet ef) 117 10.13 Schwächen des Reverse Engineering 118 11 Forward Engineering für neue Datenbanken 120 11.1 Zwei Klassentypen beim Forward Engineering 120 11.2 Beispiele in diesem Kapitel 120 11.3 Regeln für die selbsterstellten Entitätsklassen 121 11.3.1 NuGet-Pakete 121 11.3.2 Properties 122 11.3.3 Datentypen 122 11.3.4 Null-Werte erlauben (Nullable/Nullability) 122 11.3.5 Non-Nullable Reference Types (Nullable Context) 122 11.3.6 Aufzählungstypen (Enumerationen) 132 11.3.7 Beziehungen (Master-Detail) 132 11.3.8 Vererbung 135 11.3.9 Primärschlüssel 135 11.3.10 Beispiele 135 11.4 Regeln für die selbsterstellte Kontextklasse 138 11.4.1 NuGet-Pakete 138 11.4.2 Basisklasse 139 11.4.3 Konstruktor 139 11.4.4 Verweise zu den Entitätsklassen 139 11.4.5 Provider und Verbindungszeichenfolge 140 11.4.6 Beispiel für eine selbsterstellte Kontextklasse 140 11.5 Regeln für die Datenbankschemagenerierung 141 11.6 Beispiel-Client 141 11.7 Anpassung per Fluent-API (OnModelCreating()) 142 11.8 Das erzeugte Datenmodell 145 12 Anpassung des Datenbankschemas 147 12.1 Beispiele in diesem Kapitel 147 12.2 Konvention versus Konfiguration 147 12.3 Persistente versus transiente Klassen 148 12.4 Namen im Datenbankschema 149 12.4.1 Änderung der Tabellen- und Spaltennamen 149 12.4.2 Breaking Change in EF Core 3.0 150 12.5 Reihenfolge der Spalten in einer Tabelle 150 12.6 Spaltentypen/Datentypen 151 12.7 Typkonvertierungen 152 12.8 Pflichtfelder und optionale Felder 153 12.9 Feldlängen 153 12.10 Primärschlüssel 153 12.11 Beziehungen und Fremdschlüssel 154 12.12 Optionale Beziehungen und Pflichtbeziehungen 155 12.13 Uni- und Bidirektionale Beziehungen 157 12.14 1:1-Beziehungen 157 12.15 Indexe festlegen 158 12.16 Vererbung 159 12.16.1 Vererbungsstrategien 159 12.16.2 TPH und TPCT in Entity Framework Core 161 12.16.3 Mischung von TPCT und TPH 169 12.16.4 Konsistenzprobleme bei TPH 170 12.16.5 Erzwingen von TPH 171 12.16.6 Konfiguration der Diskriminatorspalte bei TPH 171 12.17 Syntaxoptionen für das Fluent-API 173 12.17.1 Sequentielle Konfiguration 173 12.17.2 Strukturierung durch Statement Lambdas 173 12.17.3 Strukturierung durch Unterroutinen 174 12.17.4 Strukturierung durch Konfigurationsklassen 174 13 Datenbankschemamigrationen 176 13.1 Prüfung der Datenbankexistenz 176 13.2 Anlegen der Datenbank zur Laufzeit 177 13.3 Schemamigrationen zur Entwicklungszeit 178 13.4 Befehle für die Schemamigrationen 178 13.5 ef.exe 179 13.6 Add-Migration 180 13.7 Update-Database 184 13.8 Schemamigrationen bei der Installation 186 13.9 Remove-Migration 186 13.10 Script-Migration 186 13.11 Schemamigrationen zur Laufzeit 187 13.11.1 Verwendung von Migrate() 187 13.11.2 IMigrator-Service 188 13.11.3 Informationen zum Migrationsstand 188 13.11.4 Praxiseinsatz: Ein Kommandozeilenwerkzeug für die Schemamigration 189 13.12 Schemamigrationsszenarien 192 13.12.1 Neue Tabellen und Spalten 192 13.12.2 Tabellen oder Spalten löschen 194 13.12.3 Tabellen oder Spalten umbenennen 194 13.12.4 Spaltendatentyp ändern 194 13.12.5 NULL-Werte verbieten 195 13.12.6 Kardinalitäten ändern 196 13.12.7 Andere Datenbankartefakte anlegen 197 13.12.8 SQL-Skriptdateien ausführen 199 13.12.9 Eigenständige Entitäten bilden 200 13.13 Weitere Möglichkeiten 203 13.14 Probleme bei der Schemamigration in Verbindung mit TFS 203 13.15 Startverhalten von Entity Framework Core 203 14 Daten lesen mit LINQ 205 14.1 Kontextklasse 205 14.2 LINQ-Abfragen 205 14.3 Schrittweise Zusammensetzung von LINQ-Abfragen 208 14.4 Einsatz von var 209 14.5 Repository-Pattern 209 14.6 LINQ-Abfragen mit Paging 212 14.7 Projektionen 214 14.7.1 Projektion auf einen Entitätstypen 214 14.7.2 Projektionen auf einen anonymen Typen 215 14.7.3 Projektionen auf einen beliebigen Typen 216 14.8 Abfrage nach Einzelobjekten 217 14.9 Laden anhand des Primärschlüssels mit Find() 218 14.10 Gruppierungen mit GroupBy() 219 14.10.1 Gruppierungen seit Entity Framework Core 3.0 219 14.10.2 Umgehung für das GroupBy-Problemin Entity Framework Core 1.x/2.x 221 14.11 LINQ im RAM statt in der Datenbank (Client-Evaluation) 226 14.12 Falsche Befehlsreihenfolge 228 14.13 Eigene Funktionen in LINQ 229 14.13.1 Eigene Funktionen in LINQ in Entity Framework Core 1.x und 2.x 229 14.13.2 Eigene Funktionen in LINQ seit Entity Framework Core 3.0 229 14.14 Kurzübersicht über die LINQ-Syntax 231 14.14.1 Einfache SELECT-Befehle (Alle Datensätze) 231 14.14.2 Bedingungen (where) 232 14.14.3 Bedingungen mit Mengen (in) 232 14.14.4 Sortierungen (orderby) 232 14.14.5 Paging (Skip() und Take()) 233 14.14.6 Projektion 233 14.14.7 Aggregatfunktionen (Count(), Min(), Max(), Average(), Sum()) 234 14.14.8 Gruppierungen (GroupBy) 234 14.14.9 Einzelobjekte (SingleOrDefault(), FirstOrDefault()) 235 14.14.10 Verbundene Objekte (Include()) 235 14.14.11 Inner Join (Join) 236 14.14.12 Cross Join (Kartesisches Produkt) 237 14.14.13 Join mit Gruppierung 237 14.14.14 Unter-Abfragen (Sub-Select) 238 14.15 Lokaler Objektzwischenspeicher in der Kontextklasse (First Level Cache) 240 14.15.1 Wirkung des Zwischenspeichers 241 14.15.2 Neuladen veralterter Objekte (Reload) 245 14.15.3 Neuladen gelöschter Objekte 246 14.15.4 Ein typischer Fehler bei Unit Tests 248 14.15.5 Den Zwischenspeicher verwalten 249 14.16 Datenbindung 251 15 Objektbeziehungen und Ladestrategien 253 15.1 Überblick über die Ladestrategien 253 15.2 Standardverhalten 253 15.3 Lazy Loading 255 15.3.1 Aktivierung des Lazy Loading 255 15.3.2 Gefahren von Lazy Loading 256 15.3.3 Lazy Loading ohne Proxyklassen 258 15.4 Explizites Nachladen (Explicit Loading) 261 15.5 Eager Loading 263 15.6 Relationship Fixup 266 15.6.1 Beispiel für Fall 1 266 15.6.2 Beispiel für Fall 2 267 15.6.3 Beispiel für Fall 3 268 15.7 Preloading mit Relationship Fixup 270 15.8 Objektbeziehungen und lokaler Zwischenspeicher 274 16 Einfügen, Löschen und Ändern 278 16.1 Speichern mit SaveChanges() 278 16.1.1 Verhalten von SaveChanges() 278 16.1.2 Beispiel 279 16.1.3 Objektzustandsänderungen 280 16.2 Fehlerfälle beim Speichern 280 16.3 Änderungsverfolgung auch für Unterobjekte 281 16.4 Zusammenfassen von Befehlen (Batching) 283 16.5 Das Foreach-Problem 283 16.6 Objekte hinzufügen mit Add() 285 16.7 Verbundene Objekte anlegen 287 16.8 Verbundene Objekte ändern / Relationship Fixup 290 16.9 Widersprüchliche Beziehungen 292 16.9.1 Objekte löschen mit Remove() 296 16.9.2 Löschen mit einem Attrappen-Objekt 298 16.9.3 Massenlöschen 299 16.10 Objekte löschen 300 16.11 Datenbanktransaktionen 302 16.11.1 Transaktion in einer Kontextinstanz 302 16.11.2 Transaktion über mehrere Kontextinstanzen ohne TransactionScope 303 16.11.3 Transaktion über mehrere Kontextinstanzen mit TransactionScope 305 16.12 Change Tracker abfragen 307 16.12.1 POCOs 307 16.12.2 Zustand eines Objekts 308 16.12.3 Liste aller geänderten Objekte 310 17 Datenänderungskonflikte (Concurrency) 313 17.1 Rückblick 313 17.2 Im Standard keine Konflikterkennung 314 17.3 Optimistisches Sperren / Konflikterkennung 315 17.4 Konflikterkennung für alle Eigenschaften 316 17.5 Konflikteinstellung per Konvention 317 17.6 Fallweise Konflikteinstellung 318 17.7 Zeitstempel (Timestamp) 319 17.8 Konflikte auflösen 321 17.9 Pessimistisches Sperren bei Entity Framework Core 325 18 Protokollierung (Logging) 328 18.1 Verwendung der Erweiterungsmethode Log() 328 18.2 Implementierung der Log()-Erweiterungsmethode 330 18.3 Protokollierungskategorien 333 18.4 EnableSensitiveDataLogging 334 19 Asynchrone Programmierung 335 19.1 Asynchrone Erweiterungsmethoden 335 19.2 ToListAsync() 335 19.3 SaveChangesAsync() 336 19.4 ForeachAsync() 337 19.5 Asynchrone Streams mit AsAsyncEnumerable() 338 20 Dynamische LINQ-Abfragen 340 20.1 Schrittweises zusammensetzen von LINQ-Abfragen 340 20.2 Expression Trees 341 20.3 Dynamic LINQ 344 21 Daten lesen und ändern mit SQL, Stored Procedures und Table Valued Functions 346 21.1 Abfragen mit FromSqlRaw() und FromSqlInterpolated() 346 21.2 Projektionen mit SQL auf Entitätsklassen 348 21.3 Projektionen auf von Entitätsklassen 349 21.4 Beliebige Resultsets mit SQL 351 21.5 Zusammensetzbarkeit von LINQ und SQL 352 21.6 Stored Procedures und Table Valued Functions 354 21.7 Erweiterungsmethode ExecuteSqlQuery() 355 21.8 SQL-DML-Befehle ohne Resultset 356 22 Weitere Tipps und Tricks zum Mapping 357 22.1 Shadow Properties 357 22.1.1 Automatische Shadow Properties 357 22.1.2 Festlegung eines Shadow Property 358 22.1.3 Ausgabe aller Shadow Properties einer Entitätsklasse 358 22.1.4 Lesen und Ändern eines Shadow Property 359 22.1.5 LINQ-Abfragen mit Shadow Properties 360 22.1.6 Praxisbeispiel: Automatisches Setzen bei jedem Speichern 360 22.1.7 Praxisbeispiel: Erweitern der Tabellen zur Betriebszeit der Anwendung 361 22.2 Berechnete Spalten (Computed Columns) 363 22.2.1 Automatisches SELECT 363 22.2.2 Praxistipp: Spalten mit einer Berechnungsformel anlegen 364 22.2.3 Spalten mit einer Berechnungsformel nutzen 365 22.2.4 Spalten mit einer Berechnungsformel beim Reverse Engineering 366 22.3 Standardwerte (Default Values) 367 22.3.1 Standardwerte beim Forward Engineering festlegen 367 22.3.2 Standardwerte verwenden 368 22.3.3 Praxistipp: Standardwerte schon beim Anlegen des Objekts vergeben 369 22.3.4 Standardwerte beim Reverse Engineering 370 22.4 Tabellenaufteilung (Table Splitting) mit Owned Types 371 22.4.1 Owned Types 371 22.4.2 Weitere Möglichkeiten mit Owned Types 377 22.4.3 Daten schreiben und lesen mit Owned Types 379 22.4.4 Einschränkungen bei Owned Types 381 22.5 Sequenzobjekte (Sequences) 382 22.5.1 Was sind Sequenzen? 382 22.5.2 Erstellen von Sequenzen mit T-SQL 382 22.5.3 Erstellen von Sequenzen beim Forward Engineering 385 22.5.4 Sequenzen im Einsatz 385 22.6 Alternative Schlüssel 388 22.6.1 Alternative Schlüssel definieren 389 22.6.2 Alternative Schlüssel im Einsatz 391 22.7 Kaskadierendes Löschen (Cascading Delete) 395 22.7.1 Löschoptionen in Entity Framework Core 395 22.7.2 Beispiel 397 22.8 Abbildung von Datenbanksichten (Views) 402 22.8.1 Datenbanksicht anlegen 403 22.8.2 Entitätsklasse für die Datenbanksicht anlegen 403 22.8.3 Einbinden der Entitätsklasse in die Kontextklasse 403 22.8.4 Verwendung der Datenbanksicht 404 22.8.5 Änderungen persistieren in Datenbanksichten 405 22.8.6 Datenbanksichten mit Entity Framework Core 2.1 und 2.2 405 22.8.7 Datenbanksichten mit Entity Framework Core 1.x und 2.0 406 22.9 Sichten auf Kontextebene (Defining Queries) 409 22.9.1 Entitätsklassen für Defining Queries 409 22.9.2 Registrierung der Entitätsklassen in der Kontextklasse 410 22.9.3 Abfragedefinition 410 22.9.4 Verwendung der Defining Queries 411 22.9.5 Alternativen zu Defining Queries 412 22.10 Wertkonvertierungen (Value Converter) 413 22.10.1 Einschränkungen 414 22.10.2 Beispiel 1: Konvertierung zwischen String und Boolean 415 22.10.3 Beispiel 2: Konvertierung zwischen Aufzählungstyp und String 417 22.11 Datenbefüllung bei der Schemamigration (Data Seeding) 421 22.11.1 Herausforderung Shadow Properties 423 22.11.2 Bug bei berechneten Spalten 425 22.12 Eigene Konventionen (Custom Conventions) 427 22.12.1 Eigene Konventionen per Massenkonfiguration mit dem Fluent-API 427 22.12.2 Eigene Konventionen per IConvention 433 22.13 Wechsel von Reverse Engineering auf Forward Engineering 444 23 Weitere Tipps und Tricks zu LINQ und SQL 446 23.1 Globale Abfragefilter (ab Version 2.0) 446 23.1.1 Filter definieren 446 23.1.2 Filter nutzen 446 23.1.3 Praxistipp: Filter ignorieren 447 23.1.4 Globale Abfragefilter bei SQL-Abfragen (ab Version 2.0) 447 23.1.5 Globale Abfragefilter bei Stored Procedures und Table Valued Functions 448 23.2 Zukünftige Abfragen (Future Queries) 448 23.2.1 Konzept der Future Queries 448 23.2.2 Future() 449 23.2.3 FutureValue() 450 23.2.4 Bug in Verbindung mit EF Profiler 451 23.3 Befehlsverfolgung mit Query Tags (ab Version 2.2) 452 23.3.1 TagWith() 452 23.3.2 Einsatz von TagWith() 452 23.3.3 Einschränkungen 459 23.4 Benachrichtigungen bei Datenänderungen (Query Notifications) 459 23.4.1 SqlDependency für Microsoft SQL Server 459 23.4.2 Aufbau des SQL-Befehls 460 23.4.3 Query Notification in einer Konsolenanwendungen 461 23.4.4 Diagnosemöglichkeiten 463 23.4.5 Query Notification in einer Desktop-Anwendungen 463 24 Leistungsoptimierung (Performance Tuning) 469 24.1 Vorgehensmodell zur Leistungsoptimierung bei Entity Framework Core 469 24.2 Best Practices für Ihre eigenen Leistungstests 469 24.3 Leistungsvergleich verschiedener Datenzugriffstechniken in .NET 470 24.4 Objektzuweisung optimieren 471 24.5 Massenoperationen 474 24.5.1 Einzellöschen 474 24.5.2 Optimierung durch Batching 474 24.5.3 Löschen ohne Laden mit Pseudo-Objekten 476 24.5.4 Einsatz von klassischem SQL anstelle des Entity Framework Core-APIs 477 24.5.5 Lamdba-Ausdrücke für Massenlöschen mit EFPlus 479 24.5.6 Massenaktualisierung mit EFPlus 481 24.5.7 Optionen für Update() und Delete() bei EFPlus 481 24.6 Leistungsoptimierung durch No-Tracking 482 24.6.1 No-Tracking aktivieren 482 24.6.2 No-Tracking fast immer möglich 483 24.6.3 No-Tracking im änderbaren Datagrid 486 24.6.4 QueryTrackingBehavior und AsTracking() 496 24.6.5 Konsequenzen des No-Tracking-Modus 497 24.6.6 Best Practices 497 24.7 Leistungsoptimierung durch Compiled Queries 498 24.7.1 Konzept einer Compiled Query 498 24.7.2 Compiled Queries in Entity Framework Core 499 24.7.3 Leistungstest 499 24.7.4 Einschränkungen 503 24.8 Auswahl der besten Ladestrategie 504 24.9 Zwischenspeicherung (Caching) 504 24.9.1 MemoryCache 505 24.9.2 CacheManager 506 24.10 Second-Level-Caching mit EFPlus 513 24.10.1 Einrichten des Second-Level-Cache 514 24.10.2 Verwenden des Second-Level-Cache 514 25 Softwarearchitektur mit Entity Framework Core 517 25.1 Monolithisches Modell 517 25.2 Entity Framework Core als Datenzugriffsschicht 518 25.3 Reine Geschäftslogik 519 25.4 Geschäftsobjekt- und ViewModel-Klassen 520 25.5 Verteilte Systeme 521 25.6 Fazit 524 26 Zusatzwerkzeuge 525 26.1 Entity Framework Core Power Tools 525 26.1.1 Funktionsüberblick 525 26.1.2 Reverse Engineering mit Entity Framework Core Power Tools 526 26.1.3 Schemamigrationen mit Entity Framework Core Power Tools 530 26.1.4 Diagramme mit Entity Framework Core Power Tools 532 26.2 LINQPad 534 26.2.1 Aufbau von LINQPad 535 26.2.2 Datenquellen einbinden 535 26.2.3 LINQ-Befehle ausführen 538 26.2.4 Abspeichern 540 26.2.5 Weitere LINQPad-Treiber 540 26.2.6 Interaktive Programmcodeeingabe 541 26.2.7 Fazit zu LINQPad 542 26.3 Entity Developer 542 26.3.1 Auswahl der ORM-Technik 543 26.3.2 Reverse Engineering mit Entity Developer 545 26.3.3 Forward Engineering mit Entity Developer 554 26.4 Entity Framework Profiler 559 26.4.1 Einbinden des Entity Framework Profilers 560 26.4.2 Befehle überwachen mit Entity Framework Profiler 561 26.4.3 Warnungen vor potenziellen Problemen 564 26.4.4 Analysefunktionen 565 26.4.5 Kommandozeilenunterstützung und API 566 26.4.6 Fazit zu Entity Framework Profiler 566 27 Zusatzkomponenten 567 27.1 Oracle-Treiber von DevArt (dotConnect for Oracle) 567 27.1.1 Unterstützte Oracle-Versionen 567 27.1.2 Installation 567 27.1.3 Visual Studio-Integration 569 27.1.4 Datenbanktreibername 572 27.1.5 Entity Framework Core-Werkzeuge 572 27.1.6 Kontextklasse 573 27.1.7 Entitätsklassen 573 27.1.8 Datentypen 573 27.2 Entity Framework Plus (EFPlus) 575 27.3 Second-Level-Caching mit EFSecondLevelCache.Core 576 27.4 Objekt-Objekt-Mapping mit AutoMapper 576 27.4.1 Objekt-Objekt-Mapping per Reflection 578 27.4.2 AutoMapper 580 27.4.3 Beispielszenario 581 27.4.4 Abbildungen konfigurieren 583 27.4.5 Abbildung ausführen mit Map() 583 27.4.6 Nicht-statisches API 584 27.4.7 Abbildungskonventionen 584 27.4.8 Abbildungskonventionen ändern 585 27.4.9 Profilklassen 586 27.4.10 Verbundene Objekte 587 27.4.11 Manuelle Abbildungen 587 27.4.12 Typkonvertierungen 589 27.4.13 Objektmengen 591 27.4.14 Vererbung 592 27.4.15 Generische Klassen 594 27.4.16 Zusatzaktionen vor und nach dem Mapping 596 27.4.17 Geschwindigkeit 598 27.4.18 Fazit zu AutoMapper 598 27.5 Andere Erweiterungen 599 28 Praxislösungen 601 28.1 Entity Framework Core in einer ASP.NET Core-Anwendung 601 28.1.1 Das Fallbeispiel "MiracleList" 601 28.1.2 Architektur 605 28.1.3 Entitätsklassen 609 28.1.4 Entity Framework Core-Kontextklasse 611 28.1.5 Lebensdauer der Kontextklasse in ASP.NET Core-Anwendungen 614 28.1.6 Geschäftslogik 614 28.1.7 WebAPI 623 28.1.8 Verwendung von Entity Framework Core per Dependency Injection 632 28.1.9 Praxistipp: Kontextinstanzpooling (DbContext Pooling) 635 28.2 DevOps mit Entity Framework (Continous Integration und Continous Delivery) 635 28.2.1 Unit Tests und Integrationstests mit Entity Framework Core 636 28.2.2 In-Memory-Treiber 636 28.2.3 SQLite- In-Memory-Treiber 639 28.2.4 Entity Framework Core beim serverseitigen Build (Continous Integration) 641 28.2.5 Entity Framework Core beim automatischen Release (Continous Delivery) 644 28.3 Entity Framework Core in einer Universal Windows Platform App 645 28.3.1 Das Fallbeispiel "MiracleList Light" 645 28.3.2 Architektur 646 28.3.3 Entitätsklassen 647 28.3.4 Entity Framework Core-Kontextklasse 649 28.3.5 Startcode 649 28.3.6 Erzeugte Datenbank 650 28.3.7 Datenzugriffscode 652 28.3.8 Benutzeroberfläche 656 28.4 Entity Framework Core in einer Xamarin-Cross-Platform-App 657 28.4.1 Das Fallbeispiel "MiracleList Light" 657 28.4.2 Architektur 658 28.4.3 Entitätsklassen 660 28.4.4 Entity Framework Core-Kontextklasse 661 28.4.5 Startcode 662 28.4.6 Erzeugte Datenbank 663 28.4.7 Datenzugriffscode 663 28.4.8 Benutzeroberfläche 666 28.5 N:M-Beziehungen zu sich selbst 668 29 Migration von ADO.NET Entity Framework zu Entity Framework Core 674 29.1 Pro und Contra Migration 674 29.2 Koexistenz (Hybride Strategie) 675 29.3 Migration von Entity Framework Code First zu Entity Framework Core 676 29.4 Migration von EDMX zu Entity Framework Core 677 30 Quellen im Internet 678 31 Stichwortverzeichnis (Index) 679 32 Werbung in eigener Sache 691

Authors have earned$8,524,644writing, publishing and selling on Leanpub,
earning 80% royalties while saving up to 25 million pounds of CO2 and up to 46,000 trees.

Erfahren Sie mehr über das Schreiben mit Leanpub

Die bedingungslose Leanpub, Kein Risiko, 100% zufrieden Garantie

Innerhalb von 45 Tagen ab Kauf kannst du dein Geld zu 100% zurückverlangen, bei jedem Leanpub-Kauf, in nur zwei Klicks. Wir bearbeiten die Erstattungen manuell, daher dauert es ein paar Tage, bis der Betrag ankommt.
Lese die kompletten Bedingungen.

Free Updates. DRM Free.

If you buy a Leanpub book, you get free updates for as long as the author updates the book! Many authors use Leanpub to publish their books in-progress, while they are writing them. All readers get free updates, regardless of when they bought the book or how much they paid (including free).

Most Leanpub books are available in PDF (for computers), EPUB (for phones and tablets) and MOBI (for Kindle). The formats that a book includes are shown at the top right corner of this page.

Finally, Leanpub books don't have any DRM copy-protection nonsense, so you can easily read them on any supported device.

Learn more about Leanpub's ebook formats and where to read them

Schreiben und veröffentlichen mit Leanpub

Autoren und Verlage nutzen Leanpub, um erstaunliche Fortschritte zu veröffentlichen und ebooks zu vervollständigen. Sie können Leanpub auch schreiben, veröffentlichen und verkaufen! Leanpub ist eine leistungsstarke Plattform für ernsthafte Autoren und kombiniert einen einfachen, eleganten Schreib- und Publishing-Workflow mit einem Laden, der sich auf den Verkauf von ebooks konzentriert. Leanpub ist eine magische Schreibmaschine für Autoren: Schreiben Sie einfach in Klartext, und um Ihr ebook zu veröffentlichen, klicken Sie einfach auf eine Schaltfläche. Es ist wirklich so einfach.

Erfahren Sie mehr über das Schreiben mit Leanpub