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-03-31

Über das Buch

Entity Framework Core 3.1.3 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 77 7.19 Support für Entity Framework Core 78 8 Installation von Entity Framework Core 80 8.1 NuGet-Pakete 80 8.2 Paketinstallation 82 8.3 Aktualisierung auf eine neue Version 86 9 Konzepte von Entity Framework Core 90 9.1 Vorgehensmodelle bei Entity Framework Core 90 9.2 Artefakte bei Entity Framework Core 93 10 Reverse Engineering bestehender Datenbanken 95 10.1 Reverse Engineering-Werkzeuge 95 10.2 NuGet-Pakete für das Reverse Engineering 95 10.3 Projektstruktur für das Reverse Engineering 96 10.4 Codegenerierung starten 97 10.5 Beispieldatenbank 98 10.6 Generierter Programmcode 100 10.7 Beispiel-Client 110 10.8 Einschränkung der Tabellen beim Reverse Engineering 112 10.9 Trennung von Kontextklasse und Entitätsklassen 112 10.10 Konfiguration der Datenbankverbindung 113 10.10.1 Verwenden von Konfigurationsdateien in .NET Framework 114 10.10.2 Verwenden von Konfigurationsdateien in .NET Core 114 10.10.3 Übergabe der Verbindungszeichenfolge 115 10.10.4 Verwendung von DbContextOptions 116 10.10.5 Eigenes Datenbankverbindungsmanagement 117 10.10.6 Flexible Konfiguration der Kontextklasse 117 10.11 Thread-Sicherheit 117 10.12 EF Core-Kommandozeilenwerkzeug (dotnet ef) 118 10.13 Schwächen des Reverse Engineering 119 11 Forward Engineering für neue Datenbanken 121 11.1 Zwei Klassentypen beim Forward Engineering 121 11.2 Beispiele in diesem Kapitel 121 11.3 Regeln für die selbsterstellten Entitätsklassen 122 11.3.1 NuGet-Pakete 122 11.3.2 Properties 123 11.3.3 Datentypen 123 11.3.4 Null-Werte erlauben (Nullable/Nullability) 123 11.3.5 Non-Nullable Reference Types (Nullable Context) 123 11.3.6 Aufzählungstypen (Enumerationen) 133 11.3.7 Beziehungen (Master-Detail) 133 11.3.8 Vererbung 136 11.3.9 Primärschlüssel 136 11.3.10 Beispiele 136 11.4 Regeln für die selbsterstellte Kontextklasse 139 11.4.1 NuGet-Pakete 139 11.4.2 Basisklasse 140 11.4.3 Konstruktor 140 11.4.4 Verweise zu den Entitätsklassen 140 11.4.5 Provider und Verbindungszeichenfolge 141 11.4.6 Beispiel für eine selbsterstellte Kontextklasse 141 11.5 Regeln für die Datenbankschemagenerierung 142 11.6 Beispiel-Client 142 11.7 Anpassung per Fluent-API (OnModelCreating()) 143 11.8 Das erzeugte Datenmodell 146 12 Anpassung des Datenbankschemas 148 12.1 Beispiele in diesem Kapitel 148 12.2 Konvention versus Konfiguration 148 12.3 Persistente versus transiente Klassen 149 12.4 Namen im Datenbankschema 150 12.4.1 Änderung der Tabellen- und Spaltennamen 150 12.4.2 Breaking Change in EF Core 3.0 151 12.5 Reihenfolge der Spalten in einer Tabelle 151 12.6 Spaltentypen/Datentypen 152 12.7 Typkonvertierungen 153 12.8 Pflichtfelder und optionale Felder 154 12.9 Feldlängen 154 12.10 Primärschlüssel 154 12.11 Beziehungen und Fremdschlüssel 155 12.12 Optionale Beziehungen und Pflichtbeziehungen 156 12.13 Uni- und Bidirektionale Beziehungen 158 12.14 1:1-Beziehungen 158 12.15 Indexe festlegen 159 12.16 Vererbung 160 12.16.1 Vererbungsstrategien 160 12.16.2 TPH und TPCT in Entity Framework Core 162 12.16.3 Mischung von TPCT und TPH 170 12.16.4 Konsistenzprobleme bei TPH 171 12.16.5 Erzwingen von TPH 172 12.16.6 Konfiguration der Diskriminatorspalte bei TPH 172 12.17 Syntaxoptionen für das Fluent-API 174 12.17.1 Sequentielle Konfiguration 174 12.17.2 Strukturierung durch Statement Lambdas 174 12.17.3 Strukturierung durch Unterroutinen 175 12.17.4 Strukturierung durch Konfigurationsklassen 175 13 Datenbankschemamigrationen 177 13.1 Prüfung der Datenbankexistenz 177 13.2 Anlegen der Datenbank zur Laufzeit 178 13.3 Schemamigrationen zur Entwicklungszeit 179 13.4 Befehle für die Schemamigrationen 179 13.5 ef.exe 180 13.6 Add-Migration 181 13.7 Update-Database 185 13.8 Schemamigrationen bei der Installation 187 13.9 Remove-Migration 187 13.10 Script-Migration 187 13.11 Schemamigrationen zur Laufzeit 188 13.11.1 Verwendung von Migrate() 188 13.11.2 IMigrator-Service 189 13.11.3 Informationen zum Migrationsstand 189 13.11.4 Praxiseinsatz: Ein Kommandozeilenwerkzeug für die Schemamigration 190 13.12 Schemamigrationsszenarien 193 13.12.1 Neue Tabellen und Spalten 193 13.12.2 Tabellen oder Spalten löschen 195 13.12.3 Tabellen oder Spalten umbenennen 195 13.12.4 Spaltendatentyp ändern 195 13.12.5 NULL-Werte verbieten 196 13.12.6 Kardinalitäten ändern 197 13.12.7 Andere Datenbankartefakte anlegen 198 13.12.8 SQL-Skriptdateien ausführen 200 13.12.9 Eigenständige Entitäten bilden 201 13.13 Weitere Möglichkeiten 204 13.14 Probleme bei der Schemamigration in Verbindung mit TFS 204 13.15 Startverhalten von Entity Framework Core 204 14 Daten lesen mit LINQ 206 14.1 Kontextklasse 206 14.2 LINQ-Abfragen 206 14.3 Schrittweise Zusammensetzung von LINQ-Abfragen 209 14.4 Einsatz von var 210 14.5 Repository-Pattern 210 14.6 LINQ-Abfragen mit Paging 213 14.7 Projektionen 215 14.7.1 Projektion auf einen Entitätstypen 215 14.7.2 Projektionen auf einen anonymen Typen 216 14.7.3 Projektionen auf einen beliebigen Typen 217 14.8 Abfrage nach Einzelobjekten 218 14.9 Laden anhand des Primärschlüssels mit Find() 219 14.10 Gruppierungen mit GroupBy() 220 14.10.1 Gruppierungen seit Entity Framework Core 3.0 220 14.10.2 Umgehung für das GroupBy-Problemin Entity Framework Core 1.x/2.x 222 14.11 LINQ im RAM statt in der Datenbank (Client-Evaluation) 227 14.12 Falsche Befehlsreihenfolge 229 14.13 Eigene Funktionen in LINQ 230 14.13.1 Eigene Funktionen in LINQ in Entity Framework Core 1.x und 2.x 230 14.13.2 Eigene Funktionen in LINQ seit Entity Framework Core 3.0 230 14.14 Kurzübersicht über die LINQ-Syntax 232 14.14.1 Einfache SELECT-Befehle (Alle Datensätze) 232 14.14.2 Bedingungen (where) 233 14.14.3 Bedingungen mit Mengen (in) 233 14.14.4 Sortierungen (orderby) 233 14.14.5 Paging (Skip() und Take()) 234 14.14.6 Projektion 234 14.14.7 Aggregatfunktionen (Count(), Min(), Max(), Average(), Sum()) 235 14.14.8 Gruppierungen (GroupBy) 235 14.14.9 Einzelobjekte (SingleOrDefault(), FirstOrDefault()) 236 14.14.10 Verbundene Objekte (Include()) 236 14.14.11 Inner Join (Join) 237 14.14.12 Cross Join (Kartesisches Produkt) 238 14.14.13 Join mit Gruppierung 238 14.14.14 Unter-Abfragen (Sub-Select) 239 14.15 Lokaler Objektzwischenspeicher in der Kontextklasse (First Level Cache) 241 14.15.1 Wirkung des Zwischenspeichers 242 14.15.2 Neuladen veralterter Objekte (Reload) 246 14.15.3 Neuladen gelöschter Objekte 247 14.15.4 Ein typischer Fehler bei Unit Tests 249 14.15.5 Den Zwischenspeicher verwalten 250 14.16 Datenbindung 252 15 Objektbeziehungen und Ladestrategien 254 15.1 Überblick über die Ladestrategien 254 15.2 Standardverhalten 254 15.3 Lazy Loading 256 15.3.1 Aktivierung des Lazy Loading 256 15.3.2 Gefahren von Lazy Loading 257 15.3.3 Lazy Loading ohne Proxyklassen 260 15.4 Explizites Nachladen (Explicit Loading) 262 15.5 Eager Loading 264 15.6 Relationship Fixup 267 15.6.1 Beispiel für Fall 1 268 15.6.2 Beispiel für Fall 2 269 15.6.3 Beispiel für Fall 3 270 15.7 Preloading mit Relationship Fixup 271 15.8 Objektbeziehungen und lokaler Zwischenspeicher 275 16 Einfügen, Löschen und Ändern 279 16.1 Speichern mit SaveChanges() 279 16.1.1 Verhalten von SaveChanges() 279 16.1.2 Beispiel 280 16.1.3 Objektzustandsänderungen 281 16.2 Fehlerfälle beim Speichern 281 16.3 Änderungsverfolgung auch für Unterobjekte 282 16.4 Zusammenfassen von Befehlen (Batching) 284 16.5 Das Foreach-Problem 284 16.6 Objekte hinzufügen mit Add() 286 16.7 Verbundene Objekte anlegen 288 16.8 Verbundene Objekte ändern / Relationship Fixup 291 16.9 Widersprüchliche Beziehungen 293 16.9.1 Objekte löschen mit Remove() 297 16.9.2 Löschen mit einem Attrappen-Objekt 299 16.9.3 Massenlöschen 300 16.10 Objekte löschen 301 16.11 Datenbanktransaktionen 303 16.11.1 Transaktion in einer Kontextinstanz 303 16.11.2 Transaktion über mehrere Kontextinstanzen ohne TransactionScope 304 16.11.3 Transaktion über mehrere Kontextinstanzen mit TransactionScope 306 16.12 Change Tracker abfragen 308 16.12.1 POCOs 308 16.12.2 Zustand eines Objekts 309 16.12.3 Liste aller geänderten Objekte 311 17 Datenänderungskonflikte (Concurrency) 314 17.1 Rückblick 314 17.2 Im Standard keine Konflikterkennung 315 17.3 Optimistisches Sperren / Konflikterkennung 316 17.4 Konflikterkennung für alle Eigenschaften 317 17.5 Konflikteinstellung per Konvention 318 17.6 Fallweise Konflikteinstellung 319 17.7 Zeitstempel (Timestamp) 320 17.8 Konflikte auflösen 322 17.9 Pessimistisches Sperren bei Entity Framework Core 326 18 Protokollierung (Logging) 329 18.1 Protokollierung mit UseLoggerFactory() 329 18.2 Filtern nach Level und Protokollkategorien 332 18.3 Übergabe der LoggerFactory 333 18.4 Ereignis-IDs 334 18.5 Erweiterungsmethode Log() 335 18.6 Implementierung der Log()-Erweiterungsmethode 337 18.7 Protokollierung mit LogTo() 342 18.8 EnableSensitiveDataLogging 342 18.9 SQL-Ausgabe mit ToQueryString() 343 18.10 Debugger-Ansichten 343 19 Asynchrone Programmierung 344 19.1 Asynchrone Erweiterungsmethoden 344 19.2 ToListAsync() 344 19.3 SaveChangesAsync() 345 19.4 ForeachAsync() 346 19.5 Asynchrone Streams mit AsAsyncEnumerable() 347 20 Dynamische LINQ-Abfragen 349 20.1 Schrittweises zusammensetzen von LINQ-Abfragen 349 20.2 Expression Trees 350 20.3 Dynamic LINQ 353 21 Daten lesen und ändern mit SQL, Stored Procedures und Table Valued Functions 355 21.1 Abfragen mit FromSqlRaw() und FromSqlInterpolated() 355 21.2 Projektionen mit SQL auf Entitätsklassen 357 21.3 Projektionen auf von Entitätsklassen 358 21.4 Beliebige Resultsets mit SQL 360 21.5 Zusammensetzbarkeit von LINQ und SQL 361 21.6 Stored Procedures und Table Valued Functions 363 21.7 Erweiterungsmethode ExecuteSqlQuery() 364 21.8 SQL-DML-Befehle ohne Resultset 365 22 Weitere Tipps und Tricks zum Mapping 366 22.1 Shadow Properties 366 22.1.1 Automatische Shadow Properties 366 22.1.2 Festlegung eines Shadow Property 367 22.1.3 Ausgabe aller Shadow Properties einer Entitätsklasse 367 22.1.4 Lesen und Ändern eines Shadow Property 368 22.1.5 LINQ-Abfragen mit Shadow Properties 369 22.1.6 Praxisbeispiel: Automatisches Setzen bei jedem Speichern 369 22.1.7 Praxisbeispiel: Erweitern der Tabellen zur Betriebszeit der Anwendung 370 22.2 Berechnete Spalten (Computed Columns) 372 22.2.1 Automatisches SELECT 372 22.2.2 Praxistipp: Spalten mit einer Berechnungsformel anlegen 373 22.2.3 Spalten mit einer Berechnungsformel nutzen 374 22.2.4 Spalten mit einer Berechnungsformel beim Reverse Engineering 375 22.3 Standardwerte (Default Values) 376 22.3.1 Standardwerte beim Forward Engineering festlegen 376 22.3.2 Standardwerte verwenden 377 22.3.3 Praxistipp: Standardwerte schon beim Anlegen des Objekts vergeben 378 22.3.4 Standardwerte beim Reverse Engineering 379 22.4 Tabellenaufteilung (Table Splitting) mit Owned Types 380 22.4.1 Owned Types 380 22.4.2 Weitere Möglichkeiten mit Owned Types 386 22.4.3 Daten schreiben und lesen mit Owned Types 388 22.4.4 Einschränkungen bei Owned Types 390 22.5 Sequenzobjekte (Sequences) 391 22.5.1 Was sind Sequenzen? 391 22.5.2 Erstellen von Sequenzen mit T-SQL 391 22.5.3 Erstellen von Sequenzen beim Forward Engineering 394 22.5.4 Sequenzen im Einsatz 394 22.6 Alternative Schlüssel 397 22.6.1 Alternative Schlüssel definieren 398 22.6.2 Alternative Schlüssel im Einsatz 400 22.7 Kaskadierendes Löschen (Cascading Delete) 404 22.7.1 Löschoptionen in Entity Framework Core 404 22.7.2 Beispiel 406 22.8 Abbildung von Datenbanksichten (Views) 411 22.8.1 Datenbanksicht anlegen 412 22.8.2 Entitätsklasse für die Datenbanksicht anlegen 412 22.8.3 Einbinden der Entitätsklasse in die Kontextklasse 412 22.8.4 Verwendung der Datenbanksicht 413 22.8.5 Änderungen persistieren in Datenbanksichten 414 22.8.6 Datenbanksichten mit Entity Framework Core 2.1 und 2.2 414 22.8.7 Datenbanksichten mit Entity Framework Core 1.x und 2.0 415 22.9 Sichten auf Kontextebene (Defining Queries) 418 22.9.1 Entitätsklassen für Defining Queries 418 22.9.2 Registrierung der Entitätsklassen in der Kontextklasse 419 22.9.3 Abfragedefinition 419 22.9.4 Verwendung der Defining Queries 420 22.9.5 Alternativen zu Defining Queries 421 22.10 Wertkonvertierungen (Value Converter) 422 22.10.1 Einschränkungen 423 22.10.2 Beispiel 1: Konvertierung zwischen String und Boolean 424 22.10.3 Beispiel 2: Konvertierung zwischen Aufzählungstyp und String 426 22.11 Datenbefüllung bei der Schemamigration (Data Seeding) 430 22.11.1 Herausforderung Shadow Properties 432 22.11.2 Bug bei berechneten Spalten 434 22.12 Eigene Konventionen (Custom Conventions) 436 22.12.1 Eigene Konventionen per Massenkonfiguration mit dem Fluent-API 436 22.12.2 Eigene Konventionen per IConvention 442 22.13 Wechsel von Reverse Engineering auf Forward Engineering 453 23 Weitere Tipps und Tricks zu LINQ und SQL 455 23.1 Globale Abfragefilter (ab Version 2.0) 455 23.1.1 Filter definieren 455 23.1.2 Filter nutzen 455 23.1.3 Praxistipp: Filter ignorieren 456 23.1.4 Globale Abfragefilter bei SQL-Abfragen (ab Version 2.0) 456 23.1.5 Globale Abfragefilter bei Stored Procedures und Table Valued Functions 457 23.2 Zukünftige Abfragen (Future Queries) 457 23.2.1 Konzept der Future Queries 457 23.2.2 Future() 458 23.2.3 FutureValue() 459 23.2.4 Bug in Verbindung mit EF Profiler 460 23.3 Befehlsverfolgung mit Query Tags (ab Version 2.2) 461 23.3.1 TagWith() 461 23.3.2 Einsatz von TagWith() 461 23.3.3 Einschränkungen 468 23.4 Benachrichtigungen bei Datenänderungen (Query Notifications) 468 23.4.1 SqlDependency für Microsoft SQL Server 468 23.4.2 Aufbau des SQL-Befehls 469 23.4.3 Query Notification in einer Konsolenanwendungen 470 23.4.4 Diagnosemöglichkeiten 472 23.4.5 Query Notification in einer Desktop-Anwendungen 472 24 Leistungsoptimierung (Performance Tuning) 478 24.1 Vorgehensmodell zur Leistungsoptimierung bei Entity Framework Core 478 24.2 Best Practices für Ihre eigenen Leistungstests 478 24.3 Leistungsvergleich verschiedener Datenzugriffstechniken in .NET 479 24.4 Objektzuweisung optimieren 480 24.5 Massenoperationen 482 24.5.1 Einzellöschen 482 24.5.2 Optimierung durch Batching 483 24.5.3 Löschen ohne Laden mit Pseudo-Objekten 484 24.5.4 Einsatz von klassischem SQL anstelle des Entity Framework Core-APIs 485 24.5.5 Lamdba-Ausdrücke für Massenlöschen mit EFPlus 487 24.5.6 Massenaktualisierung mit EFPlus 489 24.5.7 Optionen für Update() und Delete() bei EFPlus 489 24.6 Leistungsoptimierung durch No-Tracking 490 24.6.1 No-Tracking aktivieren 490 24.6.2 No-Tracking fast immer möglich 491 24.6.3 No-Tracking im änderbaren Datagrid 494 24.6.4 QueryTrackingBehavior und AsTracking() 504 24.6.5 Konsequenzen des No-Tracking-Modus 505 24.6.6 Best Practices 505 24.7 Leistungsoptimierung durch Compiled Queries 506 24.7.1 Konzept einer Compiled Query 506 24.7.2 Compiled Queries in Entity Framework Core 507 24.7.3 Leistungstest 507 24.7.4 Einschränkungen 511 24.8 Auswahl der besten Ladestrategie 512 24.9 Zwischenspeicherung (Caching) 512 24.9.1 MemoryCache 513 24.9.2 CacheManager 514 24.10 Second-Level-Caching mit EFPlus 521 24.10.1 Einrichten des Second-Level-Cache 522 24.10.2 Verwenden des Second-Level-Cache 522 25 Softwarearchitektur mit Entity Framework Core 525 25.1 Monolithisches Modell 525 25.2 Entity Framework Core als Datenzugriffsschicht 526 25.3 Reine Geschäftslogik 527 25.4 Geschäftsobjekt- und ViewModel-Klassen 528 25.5 Verteilte Systeme 529 25.6 Fazit 532 26 Zusatzwerkzeuge 533 26.1 Entity Framework Core Power Tools 533 26.1.1 Funktionsüberblick 533 26.1.2 Reverse Engineering mit Entity Framework Core Power Tools 534 26.1.3 Schemamigrationen mit Entity Framework Core Power Tools 538 26.1.4 Diagramme mit Entity Framework Core Power Tools 540 26.2 LINQPad 542 26.2.1 Aufbau von LINQPad 543 26.2.2 Datenquellen einbinden 543 26.2.3 LINQ-Befehle ausführen 546 26.2.4 Abspeichern 548 26.2.5 Weitere LINQPad-Treiber 548 26.2.6 Interaktive Programmcodeeingabe 549 26.2.7 Fazit zu LINQPad 550 26.3 Entity Developer 550 26.3.1 Auswahl der ORM-Technik 551 26.3.2 Reverse Engineering mit Entity Developer 553 26.3.3 Forward Engineering mit Entity Developer 562 26.4 Entity Framework Profiler 567 26.4.1 Einbinden des Entity Framework Profilers 568 26.4.2 Befehle überwachen mit Entity Framework Profiler 569 26.4.3 Warnungen vor potenziellen Problemen 572 26.4.4 Analysefunktionen 573 26.4.5 Kommandozeilenunterstützung und API 574 26.4.6 Fazit zu Entity Framework Profiler 574 27 Zusatzkomponenten 575 27.1 Oracle-Treiber von DevArt (dotConnect for Oracle) 575 27.1.1 Unterstützte Oracle-Versionen 575 27.1.2 Installation 575 27.1.3 Visual Studio-Integration 577 27.1.4 Datenbanktreibername 580 27.1.5 Entity Framework Core-Werkzeuge 580 27.1.6 Kontextklasse 581 27.1.7 Entitätsklassen 581 27.1.8 Datentypen 581 27.2 Entity Framework Plus (EFPlus) 583 27.3 Second-Level-Caching mit EFSecondLevelCache.Core 584 27.4 Objekt-Objekt-Mapping mit AutoMapper 584 27.4.1 Objekt-Objekt-Mapping per Reflection 586 27.4.2 AutoMapper 588 27.4.3 Beispielszenario 589 27.4.4 Abbildungen konfigurieren 591 27.4.5 Abbildung ausführen mit Map() 591 27.4.6 Nicht-statisches API 592 27.4.7 Abbildungskonventionen 592 27.4.8 Abbildungskonventionen ändern 593 27.4.9 Profilklassen 594 27.4.10 Verbundene Objekte 595 27.4.11 Manuelle Abbildungen 595 27.4.12 Typkonvertierungen 597 27.4.13 Objektmengen 599 27.4.14 Vererbung 600 27.4.15 Generische Klassen 602 27.4.16 Zusatzaktionen vor und nach dem Mapping 604 27.4.17 Geschwindigkeit 606 27.4.18 Fazit zu AutoMapper 606 27.5 Andere Erweiterungen 607 28 Praxislösungen 609 28.1 Entity Framework Core in einer ASP.NET Core-Anwendung 609 28.1.1 Das Fallbeispiel "MiracleList" 609 28.1.2 Architektur 613 28.1.3 Entitätsklassen 617 28.1.4 Entity Framework Core-Kontextklasse 619 28.1.5 Lebensdauer der Kontextklasse in ASP.NET Core-Anwendungen 622 28.1.6 Geschäftslogik 622 28.1.7 WebAPI 631 28.1.8 Verwendung von Entity Framework Core per Dependency Injection 640 28.1.9 Praxistipp: Kontextinstanzpooling (DbContext Pooling) 643 28.2 DevOps mit Entity Framework (Continous Integration und Continous Delivery) 643 28.2.1 Unit Tests und Integrationstests mit Entity Framework Core 644 28.2.2 In-Memory-Treiber 644 28.2.3 SQLite- In-Memory-Treiber 647 28.2.4 Entity Framework Core beim serverseitigen Build (Continous Integration) 649 28.2.5 Entity Framework Core beim automatischen Release (Continous Delivery) 652 28.3 Entity Framework Core in einer Universal Windows Platform App 653 28.3.1 Das Fallbeispiel "MiracleList Light" 653 28.3.2 Architektur 654 28.3.3 Entitätsklassen 655 28.3.4 Entity Framework Core-Kontextklasse 657 28.3.5 Startcode 657 28.3.6 Erzeugte Datenbank 658 28.3.7 Datenzugriffscode 660 28.3.8 Benutzeroberfläche 664 28.4 Entity Framework Core in einer Xamarin-Cross-Platform-App 665 28.4.1 Das Fallbeispiel "MiracleList Light" 665 28.4.2 Architektur 666 28.4.3 Entitätsklassen 668 28.4.4 Entity Framework Core-Kontextklasse 669 28.4.5 Startcode 670 28.4.6 Erzeugte Datenbank 671 28.4.7 Datenzugriffscode 671 28.4.8 Benutzeroberfläche 674 28.5 N:M-Beziehungen zu sich selbst 676 29 Migration von ADO.NET Entity Framework zu Entity Framework Core 682 29.1 Pro und Contra Migration 682 29.2 Koexistenz (Hybride Strategie) 683 29.3 Migration von Entity Framework Code First zu Entity Framework Core 684 29.4 Migration von EDMX zu Entity Framework Core 685 30 Quellen im Internet 686 31 Stichwortverzeichnis (Index) 687

Authors have earned$8,700,029writing, 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