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

Zuletzt aktualisiert: 2020-06-28

Über das Buch

Entity Framework Core 5.0 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
  • 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 32 4.3 Geplante Kapitel 32 4.4 Programmiersprache in diesem Buch 33 4.5 Aktion "Buch für Buchrezension" 35 5 Fallbeispiele in diesem Buch 36 5.1 Entitäten 36 5.2 Englische Version des Beispiels 40 5.3 Anwendungsarten in diesem Buch 40 5.4 Hilfsroutinen zur Konsolenausgabe 41 6 Programmcodebeispiel zum Download 47 6.1 Webadresse für Downloads 47 6.2 Übersicht über die Beispiele 47 6.3 Technischer Hinweis zu den Beispielen 49 6.4 Qualitätssicherung der Programmcodebeispiele 49 7 Was ist Entity Framework Core? 51 7.1 Was ist ein Objekt-Relationaler Mapper (ORM)? 51 7.2 ORM in der .NET-Welt 52 7.3 Versionsgeschichte von Entity Framework Core 53 7.4 Unterstützte Betriebssysteme 56 7.5 Unterstützte .NET-Versionen 57 7.6 Unterstützte Visual Studio-Versionen 58 7.7 Unterstützte Datenbanken 59 7.8 Funktionsumfang von Entity Framework Core 60 7.9 Funktionen, die dauerhaft entfallen 61 7.10 Funktionen, die Microsoft noch nachrüsten will (oder bereits hat) 62 7.11 Neue Funktionen in Entity Framework Core 64 7.12 Vergleich zwischen Entity Framework 6.4 und Entity Framework Core 5.0 64 7.13 Verbliebene Schwächen in Entity Framework Core 70 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 73 7.14.4 Tatsächliche Neuerungen in Entity Framework Core 3.0 73 7.15 Neuerungen in Entity Framework Core 3.1 74 7.16 Neuerungen in Entity Framework Core 5.0 75 7.16.1 Namensgebung 75 7.16.2 Verfügbare Versionen 75 7.16.3 Zeitplan 75 7.16.4 Platformen 75 7.16.5 Bereits verfügbare Neuerungen 76 7.16.6 Weitere geplanten Neuerungen 76 7.17 Kritik an der Entwicklungsgeschwindigkeit von Entity Framework Core 77 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 (DebugView) 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 501 24.5.1 Einzellöschen 501 24.5.2 Optimierung durch Batching 501 24.5.3 Löschen ohne Laden mit Pseudo-Objekten 503 24.5.4 Einsatz von klassischem SQL anstelle des Entity Framework Core-APIs 504 24.5.5 Lamdba-Ausdrücke für Massenlöschen mit EFPlus 506 24.5.6 Massenaktualisierung mit EFPlus 508 24.5.7 Optionen für Update() und Delete() bei EFPlus 508 24.6 Leistungsoptimierung durch No-Tracking 509 24.6.1 No-Tracking aktivieren 509 24.6.2 No-Tracking fast immer möglich 510 24.6.3 No-Tracking im änderbaren Datagrid 513 24.6.4 QueryTrackingBehavior und AsTracking() 523 24.6.5 Konsequenzen des No-Tracking-Modus 524 24.6.6 Best Practices 524 24.7 Leistungsoptimierung durch Compiled Queries 525 24.7.1 Konzept einer Compiled Query 525 24.7.2 Compiled Queries in Entity Framework Core 526 24.7.3 Leistungstest 526 24.7.4 Einschränkungen 530 24.8 Auswahl der besten Ladestrategie 531 24.9 Zwischenspeicherung (Caching) 531 24.9.1 MemoryCache 532 24.9.2 CacheManager 533 24.10 Second-Level-Caching mit EFPlus 540 24.10.1 Einrichten des Second-Level-Cache 541 24.10.2 Verwenden des Second-Level-Cache 541 25 Softwarearchitektur mit Entity Framework Core 544 25.1 Monolithisches Modell 544 25.2 Entity Framework Core als Datenzugriffsschicht 545 25.3 Reine Geschäftslogik 546 25.4 Geschäftsobjekt- und ViewModel-Klassen 547 25.5 Verteilte Systeme 548 25.6 Fazit 551 26 Zusatzwerkzeuge 552 26.1 Entity Framework Core Power Tools 552 26.1.1 Funktionsüberblick 552 26.1.2 Reverse Engineering mit Entity Framework Core Power Tools 553 26.1.3 Schemamigrationen mit Entity Framework Core Power Tools 557 26.1.4 Diagramme mit Entity Framework Core Power Tools 559 26.2 LINQPad 561 26.2.1 Aufbau von LINQPad 562 26.2.2 Datenquellen einbinden 562 26.2.3 LINQ-Befehle ausführen 565 26.2.4 Abspeichern 567 26.2.5 Weitere LINQPad-Treiber 567 26.2.6 Interaktive Programmcodeeingabe 568 26.2.7 Fazit zu LINQPad 569 26.3 Entity Developer 569 26.3.1 Auswahl der ORM-Technik 570 26.3.2 Reverse Engineering mit Entity Developer 572 26.3.3 Forward Engineering mit Entity Developer 581 26.4 Entity Framework Profiler 586 26.4.1 Einbinden des Entity Framework Profilers 587 26.4.2 Befehle überwachen mit Entity Framework Profiler 588 26.4.3 Warnungen vor potenziellen Problemen 591 26.4.4 Analysefunktionen 592 26.4.5 Kommandozeilenunterstützung und API 593 26.4.6 Fazit zu Entity Framework Profiler 593 27 Zusatzkomponenten 594 27.1 Oracle-Treiber von DevArt (dotConnect for Oracle) 594 27.1.1 Unterstützte Oracle-Versionen 594 27.1.2 Installation 594 27.1.3 Visual Studio-Integration 596 27.1.4 Datenbanktreibername 599 27.1.5 Entity Framework Core-Werkzeuge 599 27.1.6 Kontextklasse 600 27.1.7 Entitätsklassen 600 27.1.8 Datentypen 600 27.2 Entity Framework Plus (EFPlus) 602 27.3 Second-Level-Caching mit EFSecondLevelCache.Core 609 27.4 Objekt-Objekt-Mapping mit AutoMapper 609 27.4.1 Objekt-Objekt-Mapping per Reflection 611 27.4.2 AutoMapper 613 27.4.3 Beispielszenario 614 27.4.4 Abbildungen konfigurieren 616 27.4.5 Abbildung ausführen mit Map() 616 27.4.6 Nicht-statisches API 617 27.4.7 Abbildungskonventionen 617 27.4.8 Abbildungskonventionen ändern 618 27.4.9 Profilklassen 619 27.4.10 Verbundene Objekte 620 27.4.11 Manuelle Abbildungen 620 27.4.12 Typkonvertierungen 622 27.4.13 Objektmengen 624 27.4.14 Vererbung 625 27.4.15 Generische Klassen 627 27.4.16 Zusatzaktionen vor und nach dem Mapping 629 27.4.17 Geschwindigkeit 631 27.4.18 Fazit zu AutoMapper 631 27.5 Andere Erweiterungen 632 28 Praxislösungen 634 28.1 Entity Framework Core in einer ASP.NET Core-Anwendung 634 28.1.1 Das Fallbeispiel "MiracleList" 634 28.1.2 Architektur 638 28.1.3 Entitätsklassen 642 28.1.4 Entity Framework Core-Kontextklasse 644 28.1.5 Lebensdauer der Kontextklasse in ASP.NET Core-Anwendungen 647 28.1.6 Geschäftslogik 647 28.1.7 WebAPI 656 28.1.8 Verwendung von Entity Framework Core per Dependency Injection 665 28.1.9 Praxistipp: Kontextinstanzpooling (DbContext Pooling) 668 28.2 DevOps mit Entity Framework (Continous Integration und Continous Delivery) 668 28.2.1 Unit Tests und Integrationstests mit Entity Framework Core 669 28.2.2 In-Memory-Treiber 669 28.2.3 SQLite- In-Memory-Treiber 672 28.2.4 Entity Framework Core beim serverseitigen Build (Continous Integration) 674 28.2.5 Entity Framework Core beim automatischen Release (Continous Delivery) 677 28.3 Entity Framework Core in einer Universal Windows Platform App 678 28.3.1 Das Fallbeispiel "MiracleList Light" 678 28.3.2 Architektur 679 28.3.3 Entitätsklassen 680 28.3.4 Entity Framework Core-Kontextklasse 682 28.3.5 Startcode 682 28.3.6 Erzeugte Datenbank 683 28.3.7 Datenzugriffscode 685 28.3.8 Benutzeroberfläche 689 28.4 Entity Framework Core in einer Xamarin-Cross-Platform-App 690 28.4.1 Das Fallbeispiel "MiracleList Light" 690 28.4.2 Architektur 691 28.4.3 Entitätsklassen 693 28.4.4 Entity Framework Core-Kontextklasse 694 28.4.5 Startcode 695 28.4.6 Erzeugte Datenbank 696 28.4.7 Datenzugriffscode 696 28.4.8 Benutzeroberfläche 699 28.5 N:M-Beziehungen zu sich selbst 701 29 Migration von ADO.NET Entity Framework zu Entity Framework Core 707 29.1 Pro und Contra Migration 707 29.2 Koexistenz (Hybride Strategie) 708 29.3 Migration von Entity Framework Code First zu Entity Framework Core 709 29.4 Migration von EDMX zu Entity Framework Core 710 30 Quellen im Internet 711 31 Stichwortverzeichnis (Index) 712

Authors have earned$9,108,966writing, 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