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

Datenbankprogrammierung mit C# in .NET Framework, .NET Core, Mono, Xamarin und UWP

Über das Buch

Entity Framework Core 3.1.3 ist der neuste Objekt-Relationale Mapper und die aktuelle Datenzugriffstechnik von Microsoft für .NET- und .NET Core-basierte Desktop-, Web- und Konsolen-Anwendungen sowie mobile Apps mit Xamarin. 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

Dr. Holger Schwichtenberg ist Chief Technology Expert bei der MAXIMAGO GmbH, die Innovations- und Experience-getriebene Software-Entwicklung, u.a. in hochkritischen sicherheitstechnischen Bereichen, anbietet. Zudem ist er Leiter des Expertennetzwerks www.IT-Visions.de, das zahlreiche mittlere und große Unternehmen durch Beratung und Schulung bei der Entwicklung sowie dem Betrieb von Software unterstützt.

Durch seine Auftritte auf zahlreichen nationalen und internationalen Fachkonferenzen sowie mehr als 70 Fachbücher für O'Reilly, APress, Addison-Wesley, Microsoft Press und den Carl Hanser-Verlag gehört er zu den bekanntesten Experten für .NET und Webtechniken in Deutschland. Darüber hinaus ist er ständiger Mitarbeiter der Fachzeitschriften windows developer, dotnetpro und iX sowie bei heise.de. Er hat in seiner Karriere bereits über 1000 Fachartikel veröffentlicht.

Durch seine Vermittlungskompetenz hat er sich den Spitznamen "DOTNET-DOKTOR" verdient. Von Microsoft wird er für sein .NET-Fachwissen seit nunmehr 17 Jahren ausgezeichnet als Microsoft Most Valuable Professional (MVP) für .NET/Visual Studio.

Sein Weblog finden Sie unter https://www.dotnet-doktor.de. Bei Twitter folgen Sie ihm unter @DOTNETDOKTOR.

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 21 4.1 Versionsgeschichte dieses Buchs 22 4.2 Bezugsquelle für Aktualisierungen 32 4.3 Geplante Kapitel 32 4.4 Programmiersprache in diesem Buch 33 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 Dokumentation für Entity Framework Core 78 7.20 Support für Entity Framework Core 79 8 Installation von Entity Framework Core 81 8.1 NuGet-Pakete 81 8.2 Paketinstallation 83 8.3 Aktualisierung auf eine neue Version 87 9 Konzepte von Entity Framework Core 91 9.1 Vorgehensmodelle bei Entity Framework Core 91 9.2 Artefakte bei Entity Framework Core 94 10 Reverse Engineering bestehender Datenbanken 96 10.1 Reverse Engineering-Werkzeuge 96 10.2 NuGet-Pakete für das Reverse Engineering 96 10.3 Projektstruktur für das Reverse Engineering 97 10.4 Codegenerierung starten 98 10.5 Neuerungen in Entity Framework Core 5.0 99 10.6 Beispieldatenbank 99 10.7 Generierter Programmcode 101 10.8 Beispiel-Client 111 10.9 Einschränkung der Tabellen beim Reverse Engineering 113 10.10 Trennung von Kontextklasse und Entitätsklassen 113 10.11 Konfiguration der Datenbankverbindung 114 10.11.1 Verwenden von Konfigurationsdateien in .NET Framework 115 10.11.2 Verwenden von Konfigurationsdateien in .NET Core 115 10.11.3 Übergabe der Verbindungszeichenfolge 116 10.11.4 Verwendung von DbContextOptions 117 10.11.5 Eigenes Datenbankverbindungsmanagement 118 10.11.6 Flexible Konfiguration der Kontextklasse 118 10.12 Thread-Sicherheit 118 10.13 EF Core-Kommandozeilenwerkzeug (dotnet ef) 119 10.14 Schwächen des Reverse Engineering 120 11 Forward Engineering für neue Datenbanken 122 11.1 Zwei Klassentypen beim Forward Engineering 122 11.2 Beispiele in diesem Kapitel 122 11.3 Regeln für die selbsterstellten Entitätsklassen 123 11.3.1 NuGet-Pakete 123 11.3.2 Properties 124 11.3.3 Datentypen 124 11.3.4 Null-Werte erlauben (Nullable/Nullability) 124 11.3.5 Non-Nullable Reference Types (Nullable Context) 124 11.3.6 Aufzählungstypen (Enumerationen) 134 11.3.7 Beziehungen (Master-Detail) 134 11.3.8 Vererbung 137 11.3.9 Primärschlüssel 137 11.3.10 Beispiele 137 11.4 Regeln für die selbsterstellte Kontextklasse 140 11.4.1 NuGet-Pakete 140 11.4.2 Basisklasse 141 11.4.3 Konstruktor 141 11.4.4 Verweise zu den Entitätsklassen 141 11.4.5 Provider und Verbindungszeichenfolge 142 11.4.6 Beispiel für eine selbsterstellte Kontextklasse 142 11.5 Regeln für die Datenbankschemagenerierung 143 11.6 Beispiel-Client 143 11.7 Anpassung per Fluent-API (OnModelCreating()) 144 11.8 Das erzeugte Datenmodell 147 12 Anpassung des Datenbankschemas 149 12.1 Beispiele in diesem Kapitel 149 12.2 Konvention versus Konfiguration 149 12.3 Persistente versus transiente Klassen 150 12.4 Namen im Datenbankschema 151 12.4.1 Änderung der Tabellen- und Spaltennamen 151 12.4.2 Breaking Change in EF Core 3.0 152 12.5 Reihenfolge der Spalten in einer Tabelle 152 12.6 Spaltentypen/Datentypen 153 12.7 Typkonvertierungen 154 12.8 Pflichtfelder und optionale Felder 155 12.9 Feldlängen 155 12.10 Primärschlüssel 155 12.11 Beziehungen und Fremdschlüssel 156 12.12 Optionale Beziehungen und Pflichtbeziehungen 157 12.13 Uni- und Bidirektionale Beziehungen 159 12.14 1:1-Beziehungen 159 12.15 Indexe festlegen 160 12.16 Vererbung 161 12.16.1 Vererbungsstrategien 161 12.16.2 TPH und TPCT in Entity Framework Core 163 12.16.3 Mischung von TPCT und TPH 171 12.16.4 Konsistenzprobleme bei TPH 172 12.16.5 Erzwingen von TPH 173 12.16.6 Konfiguration der Diskriminatorspalte bei TPH 173 12.17 Syntaxoptionen für das Fluent-API 175 12.17.1 Sequentielle Konfiguration 175 12.17.2 Strukturierung durch Statement Lambdas 175 12.17.3 Strukturierung durch Unterroutinen 176 12.17.4 Strukturierung durch Konfigurationsklassen 176 13 Datenbankschemamigrationen 178 13.1 Informationen über die Datenbank 178 13.2 Prüfung der Datenbankexistenz 178 13.3 Anlegen der Datenbank zur Laufzeit 179 13.4 Schemamigrationen zur Entwicklungszeit 180 13.5 Befehle für die Schemamigrationen 181 13.6 ef.exe 182 13.7 Add-Migration 183 13.8 Update-Database 186 13.9 Schemamigrationen bei der Installation 188 13.10 Remove-Migration 188 13.11 Script-Migration 189 13.12 Schemamigrationen zur Laufzeit 189 13.12.1 Verwendung von Migrate() 189 13.12.2 IMigrator-Service 190 13.12.3 Informationen zum Migrationsstand 190 13.12.4 Praxiseinsatz: Ein Kommandozeilenwerkzeug für die Schemamigration 191 13.12.5 Neue Tabellen und Spalten 194 13.13 Schemamigrationsszenarien 196 13.13.1 Tabellen oder Spalten löschen 196 13.13.2 Tabellen oder Spalten umbenennen 196 13.13.3 Spaltendatentyp ändern 196 13.13.4 NULL-Werte verbieten 197 13.13.5 Kardinalitäten ändern 198 13.13.6 Andere Datenbankartefakte anlegen 199 13.13.7 SQL-Skriptdateien ausführen 201 13.13.8 Eigenständige Entitäten bilden 202 13.14 Weitere Möglichkeiten 205 13.15 Probleme bei der Schemamigration in Verbindung mit TFS 205 13.16 Startverhalten von Entity Framework Core 206 14 Daten lesen mit LINQ 207 14.1 Kontextklasse 207 14.2 LINQ-Abfragen 207 14.3 Schrittweise Zusammensetzung von LINQ-Abfragen 210 14.4 Einsatz von var 211 14.5 Repository-Pattern 211 14.6 LINQ-Abfragen mit Paging 214 14.7 Projektionen 216 14.7.1 Projektion auf einen Entitätstypen 216 14.7.2 Projektionen auf einen anonymen Typen 217 14.7.3 Projektionen auf einen beliebigen Typen 218 14.8 Abfrage nach Einzelobjekten 219 14.9 Laden anhand des Primärschlüssels mit Find() 220 14.10 Gruppierungen mit GroupBy() 221 14.10.1 Gruppierungen seit Entity Framework Core 3.0 221 14.10.2 Umgehung für das GroupBy-Problemin Entity Framework Core 1.x/2.x 223 14.11 LINQ im RAM statt in der Datenbank (Client-Evaluation) 228 14.12 Falsche Befehlsreihenfolge 230 14.13 Eigene Funktionen in LINQ 231 14.13.1 Eigene Funktionen in LINQ in Entity Framework Core 1.x und 2.x 231 14.13.2 Eigene Funktionen in LINQ seit Entity Framework Core 3.0 231 14.14 Kurzübersicht über die LINQ-Syntax 233 14.14.1 Einfache SELECT-Befehle (Alle Datensätze) 233 14.14.2 Bedingungen (where) 234 14.14.3 Bedingungen mit Mengen (in) 234 14.14.4 Sortierungen (orderby) 234 14.14.5 Paging (Skip() und Take()) 235 14.14.6 Projektion 235 14.14.7 Aggregatfunktionen (Count(), Min(), Max(), Average(), Sum()) 236 14.14.8 Gruppierungen (GroupBy) 236 14.14.9 Einzelobjekte (SingleOrDefault(), FirstOrDefault()) 237 14.14.10 Verbundene Objekte (Include()) 237 14.14.11 Inner Join (Join) 238 14.14.12 Cross Join (Kartesisches Produkt) 239 14.14.13 Join mit Gruppierung 239 14.14.14 Unter-Abfragen (Sub-Select) 240 14.15 Lokaler Objektzwischenspeicher in der Kontextklasse (First Level Cache) 242 14.15.1 Wirkung des Zwischenspeichers 243 14.15.2 Neuladen veralterter Objekte (Reload) 247 14.15.3 Neuladen gelöschter Objekte 248 14.15.4 Ein typischer Fehler bei Unit Tests 250 14.15.5 Den Zwischenspeicher verwalten 251 14.16 Datenbindung 253 15 Objektbeziehungen und Ladestrategien 255 15.1 Überblick über die Ladestrategien 255 15.2 Standardverhalten 255 15.3 Lazy Loading 257 15.3.1 Aktivierung des Lazy Loading 257 15.3.2 Gefahren von Lazy Loading 258 15.3.3 Lazy Loading ohne Proxyklassen 261 15.4 Explizites Nachladen (Explicit Loading) 263 15.5 Eager Loading 265 15.6 Eager Loading mit Bedingungen (Filtered Includes) 268 15.7 Relationship Fixup 269 15.7.1 Beispiel für Fall 1 270 15.7.2 Beispiel für Fall 2 271 15.7.3 Beispiel für Fall 3 272 15.8 Preloading mit Relationship Fixup 273 15.9 Objektbeziehungen und lokaler Zwischenspeicher 277 16 Einfügen, Löschen und Ändern 281 16.1 Speichern mit SaveChanges() 281 16.1.1 Verhalten von SaveChanges() 281 16.1.2 Beispiel 282 16.1.3 Objektzustandsänderungen 283 16.2 Fehlerfälle beim Speichern 283 16.3 Änderungsverfolgung auch für Unterobjekte 284 16.4 Zusammenfassen von Befehlen (Batching) 286 16.5 Das Foreach-Problem 286 16.6 Objekte hinzufügen mit Add() 288 16.7 Verbundene Objekte anlegen 290 16.8 Verbundene Objekte ändern / Relationship Fixup 293 16.9 Widersprüchliche Beziehungen 295 16.9.1 Objekte löschen mit Remove() 299 16.9.2 Löschen mit einem Attrappen-Objekt 301 16.9.3 Massenlöschen 302 16.10 Objekte löschen 303 16.11 Datenbanktransaktionen 305 16.11.1 Transaktion in einer Kontextinstanz 305 16.11.2 Transaktion über mehrere Kontextinstanzen ohne TransactionScope 306 16.11.3 Transaktion über mehrere Kontextinstanzen mit TransactionScope 308 16.12 Change Tracker abfragen 310 16.12.1 POCOs 310 16.12.2 Zustand eines Objekts 311 16.12.3 Liste aller geänderten Objekte 313 17 Datenänderungskonflikte (Concurrency) 316 17.1 Rückblick 316 17.2 Im Standard keine Konflikterkennung 317 17.3 Optimistisches Sperren / Konflikterkennung 318 17.4 Konflikterkennung für alle Eigenschaften 319 17.5 Konflikteinstellung per Konvention 320 17.6 Fallweise Konflikteinstellung 321 17.7 Zeitstempel (Timestamp) 322 17.8 Konflikte auflösen 324 17.9 Pessimistisches Sperren bei Entity Framework Core 328 18 Protokollierung (Logging) 331 18.1 Protokollierung mit UseLoggerFactory() 331 18.2 Filtern nach Level und Protokollkategorien 334 18.3 Übergabe der LoggerFactory 335 18.4 Ereignis-IDs 336 18.5 Erweiterungsmethode Log() 337 18.6 Implementierung der Log()-Erweiterungsmethode 339 18.7 Protokollierung mit LogTo() 344 18.8 EnableSensitiveDataLogging und EnableDetailedErrors 344 18.9 SQL-Ausgabe mit ToQueryString() 345 18.10 Debugger-Ansichten 345 19 Asynchrone Programmierung 347 19.1 Asynchrone Erweiterungsmethoden 347 19.2 ToListAsync() 347 19.3 SaveChangesAsync() 348 19.4 ForeachAsync() 349 19.5 Asynchrone Streams mit AsAsyncEnumerable() 350 20 Dynamische LINQ-Abfragen 352 20.1 Schrittweises zusammensetzen von LINQ-Abfragen 352 20.2 Expression Trees 353 20.3 Dynamic LINQ 356 21 Daten lesen und ändern mit SQL, Stored Procedures und Table Valued Functions 358 21.1 Abfragen mit FromSqlRaw() und FromSqlInterpolated() 358 21.2 Projektionen mit SQL auf Entitätsklassen 360 21.3 Projektionen auf von Entitätsklassen 361 21.4 Beliebige Resultsets mit SQL 363 21.5 Zusammensetzbarkeit von LINQ und SQL 364 21.6 Stored Procedures und Table Valued Functions 366 21.7 Erweiterungsmethode ExecuteSqlQuery() 367 21.8 SQL-DML-Befehle ohne Resultset 368 22 Weitere Tipps und Tricks zum Mapping 369 22.1 Mapping auf Properties oder Fields 369 22.1.1 Beispielszenario 369 22.1.2 Mapping von Fields und privaten Properties 372 22.1.3 Fields bevorzugt beim Materialisieren 373 22.1.4 Abweichungen von den Konventionen 376 22.1.5 Zugriff auf Property erzwingen 377 22.1.6 Verwendung von privaten Mitgliedern in LINQ-Abfragen 378 22.2 Shadow Properties 378 22.2.1 Automatische Shadow Properties 378 22.2.2 Festlegung eines Shadow Property 379 22.2.3 Ausgabe aller Shadow Properties einer Entitätsklasse 379 22.2.4 Lesen und Ändern eines Shadow Property 380 22.2.5 LINQ-Abfragen mit Shadow Properties 381 22.2.6 Praxisbeispiel: Automatisches Setzen bei jedem Speichern 381 22.2.7 Praxisbeispiel: Erweitern der Tabellen zur Betriebszeit der Anwendung 382 22.3 Berechnete Spalten (Computed Columns) 384 22.3.1 Automatisches SELECT 384 22.3.2 Praxistipp: Spalten mit einer Berechnungsformel anlegen 385 22.3.3 Spalten mit einer Berechnungsformel nutzen 386 22.3.4 Spalten mit einer Berechnungsformel beim Reverse Engineering 388 22.4 Standardwerte (Default Values) 388 22.4.1 Standardwerte beim Forward Engineering festlegen 388 22.4.2 Standardwerte verwenden 389 22.4.3 Praxistipp: Standardwerte schon beim Anlegen des Objekts vergeben 391 22.4.4 Standardwerte beim Reverse Engineering 392 22.5 Tabellenaufteilung (Table Splitting) mit Owned Types 392 22.5.1 Owned Types 393 22.5.2 Weitere Möglichkeiten mit Owned Types 399 22.5.3 Daten schreiben und lesen mit Owned Types 401 22.5.4 Einschränkungen bei Owned Types 402 22.6 Sequenzobjekte (Sequences) 403 22.6.1 Was sind Sequenzen? 403 22.6.2 Erstellen von Sequenzen mit T-SQL 404 22.6.3 Erstellen von Sequenzen beim Forward Engineering 406 22.6.4 Sequenzen im Einsatz 407 22.7 Alternative Schlüssel 410 22.7.1 Alternative Schlüssel definieren 411 22.7.2 Alternative Schlüssel im Einsatz 413 22.8 Kaskadierendes Löschen (Cascading Delete) 416 22.8.1 Löschoptionen in Entity Framework Core 416 22.8.2 Beispiel 418 22.9 Abbildung von Datenbanksichten (Views) 423 22.9.1 Datenbanksicht anlegen 424 22.9.2 Entitätsklasse für die Datenbanksicht anlegen 424 22.9.3 Einbinden der Entitätsklasse in die Kontextklasse 424 22.9.4 Verwendung der Datenbanksicht 425 22.9.5 Änderungen persistieren in Datenbanksichten 426 22.9.6 Datenbanksichten mit Entity Framework Core 2.1 und 2.2 426 22.9.7 Datenbanksichten mit Entity Framework Core 1.x und 2.0 427 22.10 Sichten auf Kontextebene (Defining Queries) 430 22.10.1 Entitätsklassen für Defining Queries 430 22.10.2 Registrierung der Entitätsklassen in der Kontextklasse 431 22.10.3 Abfragedefinition 431 22.10.4 Verwendung der Defining Queries 432 22.10.5 Alternativen zu Defining Queries 433 22.11 Wertkonvertierungen (Value Converter) 434 22.11.1 Einschränkungen 435 22.11.2 Beispiel 1: Konvertierung zwischen String und Boolean 436 22.11.3 Beispiel 2: Konvertierung zwischen Aufzählungstyp und String 438 22.12 Datenbefüllung bei der Schemamigration (Data Seeding) 442 22.12.1 Herausforderung Shadow Properties 444 22.12.2 Bug bei berechneten Spalten 446 22.13 Eigene Konventionen (Custom Conventions) 448 22.13.1 Eigene Konventionen per Massenkonfiguration mit dem Fluent-API 448 22.13.2 Eigene Konventionen per IConvention 454 22.14 Wechsel von Reverse Engineering auf Forward Engineering 465 23 Weitere Tipps und Tricks zu LINQ und SQL 467 23.1 Globale Abfragefilter (ab Version 2.0) 467 23.1.1 Filter definieren 467 23.1.2 Filter nutzen 467 23.1.3 Praxistipp: Filter ignorieren 468 23.1.4 Globale Abfragefilter bei SQL-Abfragen (ab Version 2.0) 468 23.1.5 Globale Abfragefilter bei Stored Procedures und Table Valued Functions 469 23.2 Skalare Datenbankfunktionen 469 23.3 Zukünftige Abfragen (Future Queries) 475 23.3.1 Konzept der Future Queries 475 23.3.2 Future() 475 23.3.3 FutureValue() 477 23.3.4 Bug in Verbindung mit EF Profiler 478 23.4 Befehlsverfolgung mit Query Tags (ab Version 2.2) 479 23.4.1 TagWith() 479 23.4.2 Einsatz von TagWith() 479 23.4.3 Einschränkungen 486 23.5 Benachrichtigungen bei Datenänderungen (Query Notifications) 486 23.5.1 SqlDependency für Microsoft SQL Server 486 23.5.2 Aufbau des SQL-Befehls 487 23.5.3 Query Notification in einer Konsolenanwendungen 488 23.5.4 Diagnosemöglichkeiten 490 23.5.5 Query Notification in einer Desktop-Anwendungen 490 24 Leistungsoptimierung (Performance Tuning) 496 24.1 Vorgehensmodell zur Leistungsoptimierung bei Entity Framework Core 496 24.2 Best Practices für Ihre eigenen Leistungstests 496 24.3 Leistungsvergleich verschiedener Datenzugriffstechniken in .NET 497 24.4 Objektzuweisung optimieren 498 24.5 Massenoperationen 500 24.5.1 Einzellöschen 500 24.5.2 Optimierung durch Batching 501 24.5.3 Löschen ohne Laden mit Pseudo-Objekten 502 24.5.4 Einsatz von klassischem SQL anstelle des Entity Framework Core-APIs 503 24.5.5 Lamdba-Ausdrücke für Massenlöschen mit EFPlus 505 24.5.6 Massenaktualisierung mit EFPlus 507 24.5.7 Optionen für Update() und Delete() bei EFPlus 507 24.6 Leistungsoptimierung durch No-Tracking 508 24.6.1 No-Tracking aktivieren 508 24.6.2 No-Tracking fast immer möglich 509 24.6.3 No-Tracking im änderbaren Datagrid 512 24.6.4 QueryTrackingBehavior und AsTracking() 522 24.6.5 Konsequenzen des No-Tracking-Modus 523 24.6.6 Best Practices 523 24.7 Leistungsoptimierung durch Compiled Queries 524 24.7.1 Konzept einer Compiled Query 524 24.7.2 Compiled Queries in Entity Framework Core 525 24.7.3 Leistungstest 525 24.7.4 Einschränkungen 529 24.8 Auswahl der besten Ladestrategie 530 24.9 Zwischenspeicherung (Caching) 530 24.9.1 MemoryCache 531 24.9.2 CacheManager 532 24.10 Second-Level-Caching mit EFPlus 539 24.10.1 Einrichten des Second-Level-Cache 540 24.10.2 Verwenden des Second-Level-Cache 540 25 Softwarearchitektur mit Entity Framework Core 543 25.1 Monolithisches Modell 543 25.2 Entity Framework Core als Datenzugriffsschicht 544 25.3 Reine Geschäftslogik 545 25.4 Geschäftsobjekt- und ViewModel-Klassen 546 25.5 Verteilte Systeme 547 25.6 Fazit 550 26 Zusatzwerkzeuge 551 26.1 Entity Framework Core Power Tools 551 26.1.1 Funktionsüberblick 551 26.1.2 Reverse Engineering mit Entity Framework Core Power Tools 552 26.1.3 Schemamigrationen mit Entity Framework Core Power Tools 556 26.1.4 Diagramme mit Entity Framework Core Power Tools 558 26.2 LINQPad 560 26.2.1 Aufbau von LINQPad 561 26.2.2 Datenquellen einbinden 561 26.2.3 LINQ-Befehle ausführen 564 26.2.4 Abspeichern 566 26.2.5 Weitere LINQPad-Treiber 566 26.2.6 Interaktive Programmcodeeingabe 567 26.2.7 Fazit zu LINQPad 568 26.3 Entity Developer 568 26.3.1 Auswahl der ORM-Technik 569 26.3.2 Reverse Engineering mit Entity Developer 571 26.3.3 Forward Engineering mit Entity Developer 580 26.4 Entity Framework Profiler 585 26.4.1 Einbinden des Entity Framework Profilers 586 26.4.2 Befehle überwachen mit Entity Framework Profiler 587 26.4.3 Warnungen vor potenziellen Problemen 590 26.4.4 Analysefunktionen 591 26.4.5 Kommandozeilenunterstützung und API 592 26.4.6 Fazit zu Entity Framework Profiler 592 27 Zusatzkomponenten 593 27.1 Oracle-Treiber von DevArt (dotConnect for Oracle) 593 27.1.1 Unterstützte Oracle-Versionen 593 27.1.2 Installation 593 27.1.3 Visual Studio-Integration 595 27.1.4 Datenbanktreibername 598 27.1.5 Entity Framework Core-Werkzeuge 598 27.1.6 Kontextklasse 599 27.1.7 Entitätsklassen 599 27.1.8 Datentypen 599 27.2 Entity Framework Plus (EFPlus) 601 27.3 Second-Level-Caching mit EFSecondLevelCache.Core 608 27.4 Objekt-Objekt-Mapping mit AutoMapper 608 27.4.1 Objekt-Objekt-Mapping per Reflection 610 27.4.2 AutoMapper 612 27.4.3 Beispielszenario 613 27.4.4 Abbildungen konfigurieren 615 27.4.5 Abbildung ausführen mit Map() 615 27.4.6 Nicht-statisches API 616 27.4.7 Abbildungskonventionen 616 27.4.8 Abbildungskonventionen ändern 617 27.4.9 Profilklassen 618 27.4.10 Verbundene Objekte 619 27.4.11 Manuelle Abbildungen 619 27.4.12 Typkonvertierungen 621 27.4.13 Objektmengen 623 27.4.14 Vererbung 624 27.4.15 Generische Klassen 626 27.4.16 Zusatzaktionen vor und nach dem Mapping 628 27.4.17 Geschwindigkeit 630 27.4.18 Fazit zu AutoMapper 630 27.5 Andere Erweiterungen 631 28 Praxislösungen 633 28.1 Entity Framework Core in einer ASP.NET Core-Anwendung 633 28.1.1 Das Fallbeispiel "MiracleList" 633 28.1.2 Architektur 637 28.1.3 Entitätsklassen 641 28.1.4 Entity Framework Core-Kontextklasse 643 28.1.5 Lebensdauer der Kontextklasse in ASP.NET Core-Anwendungen 646 28.1.6 Geschäftslogik 646 28.1.7 WebAPI 655 28.1.8 Verwendung von Entity Framework Core per Dependency Injection 664 28.1.9 Praxistipp: Kontextinstanzpooling (DbContext Pooling) 667 28.2 DevOps mit Entity Framework (Continous Integration und Continous Delivery) 667 28.2.1 Unit Tests und Integrationstests mit Entity Framework Core 668 28.2.2 In-Memory-Treiber 668 28.2.3 SQLite- In-Memory-Treiber 671 28.2.4 Entity Framework Core beim serverseitigen Build (Continous Integration) 673 28.2.5 Entity Framework Core beim automatischen Release (Continous Delivery) 676 28.3 Entity Framework Core in einer Universal Windows Platform App 677 28.3.1 Das Fallbeispiel "MiracleList Light" 677 28.3.2 Architektur 678 28.3.3 Entitätsklassen 679 28.3.4 Entity Framework Core-Kontextklasse 681 28.3.5 Startcode 681 28.3.6 Erzeugte Datenbank 682 28.3.7 Datenzugriffscode 684 28.3.8 Benutzeroberfläche 688 28.4 Entity Framework Core in einer Xamarin-Cross-Platform-App 689 28.4.1 Das Fallbeispiel "MiracleList Light" 689 28.4.2 Architektur 690 28.4.3 Entitätsklassen 692 28.4.4 Entity Framework Core-Kontextklasse 693 28.4.5 Startcode 694 28.4.6 Erzeugte Datenbank 695 28.4.7 Datenzugriffscode 695 28.4.8 Benutzeroberfläche 698 28.5 N:M-Beziehungen zu sich selbst 700 29 Migration von ADO.NET Entity Framework zu Entity Framework Core 706 29.1 Pro und Contra Migration 706 29.2 Koexistenz (Hybride Strategie) 707 29.3 Migration von Entity Framework Code First zu Entity Framework Core 708 29.4 Migration von EDMX zu Entity Framework Core 709 30 Quellen im Internet 710 31 Stichwortverzeichnis (Index) 711

Authors have earned$9,537,060writing, 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