Moderne Datenzugriffslösungen mit Entity Framework Core 3.0
Moderne Datenzugriffslösungen mit Entity Framework Core 3.0 (E-Book (PDF) und Programmcodebeispiele (ZIP))
$44.00
Minimal-Preis
$49.00
Empfohlener Preis
Moderne Datenzugriffslösungen mit Entity Framework Core 3.0

Zuletzt aktualisiert: 2019-08-29

Über das Buch

Entity Framework Core 3.0 ist der neue 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 2017/2019.

  • Deutsch

  • PDF

$44.00
Minimal-Preis
$49.00
Empfohlener Preis
Nur das E-Book (PDF)
  • Deutsch

  • PDF

$35.00
Minimal-Preis
$44.00
Empfohlener Preis

Table of Contents

1 Inhaltsverzeichnis 4

2 Vorwort 18

3 Über den Autor 20

4 Über dieses Buch 21

4.1 Versionsgeschichte dieses Buchs 21

4.2 Bezugsquelle für Aktualisierungen 28

4.3 Geplante Kapitel 28

4.4 Programmiersprache in diesem Buch 29

5 Fallbeispiele in diesem Buch 30

5.1 Entitäten 30

5.2 Englische Version des Beispiels 34

5.3 Anwendungsarten in diesem Buch 34

5.4 Hilfsroutinen zur Konsolenausgabe 35

6 Programmcodebeispiel zum Download 41

6.1 Website zum Download 41

6.2 Übersicht über die Beispiele 41

6.3 Technischer Hinweis zu den Beispielen 43

6.4 Qualitätssicherung der Beispiele 43

7 Was ist Entity Framework Core? 45

7.1 Was ist ein Objekt-Relationaler Mapper (ORM)? 45

7.2 ORM in der .NET-Welt 46

7.3 Versionsgeschichte von Entity Framework Core 47

7.4 Unterstützte Betriebssysteme 50

7.5 Unterstützte .NET-Versionen 50

7.6 Unterstützte Visual Studio-Versionen 52

7.7 Unterstützte Datenbanken 52

7.8 Funktionsumfang von Entity Framework Core 54

7.9 Funktionen, die dauerhaft entfallen 55

7.10 Funktionen, die Microsoft noch nachrüsten will 56

7.11 Neue Funktionen in Entity Framework Core 58

7.12 Neuerungen in Entity Framework Core 3.x 59

7.13 Kommende Versionen 59

7.14 Kritik an der Entwicklungsgeschwindigkeit von Entity Framework Core 60

7.15 Einsatzszenarien für Entity Framework Core 60

7.16 Migration von ADO.NET Entity Framework zu Entity Framework Core 61

8 Installation von Entity Framework Core 63

8.1 Nuget-Pakete 63

8.2 Paketinstallation 64

8.3 Aktualisierung auf eine neue Version 69

9 Konzepte von Entity Framework Core 73

9.1 Vorgehensmodelle bei Entity Framework Core 73

9.2 Artefakte bei Entity Framework Core 76

10 Reverse Engineering bestehender Datenbanken 78

10.1 Reverse Engineering-Werkzeuge 78

10.2 Vorbereiten des Reverse Engineering mit PowerShell-Befehlen 78

10.3 Codegenerierung 80

10.4 Generierter Programmcode 84

10.5 Beispiel-Client 90

10.6 .NET Core-Tool 91

10.7 Schwächen des Reverse Engineering 92

11 Forward Engineering für neue Datenbanken 94

11.1 Zwei Klassentypen beim Forward Engineering 94

11.2 Beispiele in diesem Kapitel 94

11.3 Regeln für die selbsterstellten Entitätsklassen 95

11.3.1 Nuget-Pakete 95

11.3.2 Properties 96

11.3.3 Datentypen 96

11.3.4 Beziehungen (Master-Detail) 96

11.3.5 Vererbung 99

11.3.6 Primärschlüssel 99

11.3.7 Beispiele 99

11.4 Regeln für die selbsterstellte Kontextklasse 102

11.4.1 Nuget-Pakete 102

11.4.2 Basisklasse 103

11.4.3 Konstruktor 103

11.4.4 Verweise zu den Entitätsklassen 103

11.4.5 Provider und Verbindungszeichenfolge 103

11.4.6 Beispiel für eine selbsterstellte Kontextklasse 105

11.4.7 Verwendung von DbContextOptions 105

11.4.8 Eigenes Datenbankverbindungsamanagement 107

11.4.9 Flexible Konfiguration der Kontextklasse 107

11.4.10 Thread-Sicherheit 107

11.5 Regeln für die Datenbankschemagenerierung 107

11.6 Beispiel-Client 108

11.7 Anpassung per Fluent-API (OnModelCreating()) 109

11.8 Das erzeugte Datenmodell 111

12 Anpassung des Datenbankschemas 114

12.1 Beispiele in diesem Kapitel 114

12.2 Konvention versus Konfiguration 114

12.3 Persistente versus transiente Klassen 115

12.4 Namen im Datenbankschema 116

12.4.1 Änderung der Tabellen- und Spaltennamen 116

12.4.2 Breaking Change in EF Core 3.0 117

12.5 Reihenfolge der Spalten in einer Tabelle 117

12.6 Spaltentypen/Datentypen 118

12.7 Typkonvertierungen 119

12.8 Pflichtfelder und optionale Felder 120

12.9 Feldlängen 120

12.10 Primärschlüssel 120

12.11 Beziehungen und Fremdschlüssel 121

12.12 Optionale Beziehungen und Pflichtbeziehungen 122

12.13 Uni- und Bidirektionale Beziehungen 124

12.14 1:1-Beziehungen 125

12.15 Indexe festlegen 126

12.16 Vererbung 127

12.16.1 Vererbungsstrategien 127

12.16.2 TPH und TPCT in Entity Framework Core 129

12.16.3 Mischung von TPCT und TPH 138

12.16.4 Konsistenzprobleme bei TPH 139

12.16.5 Erzwingen von TPH 140

12.16.6 Konfiguration der Diskriminatorspalte bei TPH 140

12.17 Syntaxoptionen für das Fluent-API 142

12.17.1 Sequentielle Konfiguration 142

12.17.2 Strukturierung durch Statement Lambdas 142

12.17.3 Strukturierung durch Unterroutinen 143

12.17.4 Strukturierung durch Konfigurationsklassen 144

12.18 Massenkonfiguration mit dem Fluent-API 145

13 Datenbankschemamigrationen 146

13.1 Anlegen der Datenbank zur Laufzeit 146

13.2 Schemamigrationen zur Entwicklungszeit 147

13.3 Befehle für die Schemamigrationen 147

13.4 ef.exe 148

13.5 Add-Migration 149

13.6 Update-Database 153

13.7 Schemamigrationen bei der Installation 155

13.8 Remove-Migration 155

13.9 Script-Migration 155

13.10 Schemamigrationen zur Laufzeit 156

13.10.1 Verwendung von Migrate() 156

13.10.2 IMigrator-Service 157

13.10.3 Informationen zum Migrationsstand 157

13.10.4 Praxiseinsatz: Ein Kommandozeilenwerkzeug für die Schemamigration 158

13.11 Schemamigrationsszenarien 162

13.11.1 Neue Tabellen und Spalten 162

13.11.2 Tabellen oder Spalten löschen 164

13.11.3 Tabellen oder Spalten umbenennen 164

13.11.4 Spaltendatentyp ändern 164

13.11.5 NULL-Werte verbieten 165

13.11.6 Kardinalitäten ändern 166

13.11.7 Andere Datenbankartefakte anlegen 167

13.11.8 SQL-Skriptdateien ausführen 169

13.11.9 Eigenständige Entitäten bilden 170

13.12 Weitere Möglichkeiten 173

13.13 Probleme bei der Schemamigration in Verbindung mit TFS 174

13.14 Startverhalten von Entity Framework Core 174

14 Daten lesen mit LINQ 175

14.1 Kontextklasse 175

14.2 LINQ-Abfragen 175

14.3 Schrittweises Zusammensetzung von LINQ-Abfragen 178

14.4 Einsatz von var 179

14.5 Repository-Pattern 179

14.6 LINQ-Abfragen mit Paging 183

14.7 Projektionen 184

14.7.1 Projektion auf einen Entitätstypen 185

14.7.2 Projektionen auf einen anonymen Typen 185

14.7.3 Projektionen auf einen beliebigen Typen 187

14.8 Abfrage nach Einzelobjekten 188

14.9 Laden anhand des Primärschlüssels mit Find() 189

14.10 Gruppierungen 190

14.11 Umgehung für das GroupBy-Problem 191

14.11.1 Mapping auf Nicht-Entitätstypen 192

14.11.2 Entitätsklasse für die Datenbanksicht anlegen 193

14.11.3 Einbinden der Entitätsklasse in die Kontextklasse 193

14.11.4 Verwendung der Pseudo-Entitätsklasse 194

14.11.5 Herausforderung: Migrationen 194

14.11.6 Gruppierungen mit Datenbanksichten 196

14.12 LINQ im RAM statt in der Datenbank (Client-Evaluation) 196

14.13 Falsche Befehlsreihenfolge 198

14.14 Eigene Funktionen in LINQ 199

14.15 Kurzübersicht über die LINQ-Syntax 200

14.15.1 Einfache SELECT-Befehle (Alle Datensätze) 201

14.15.2 Bedingungen (where) 201

14.15.3 Bedingungen mit Mengen (in) 202

14.15.4 Sortierungen (orderby) 202

14.15.5 Paging (Skip() und Take()) 202

14.15.6 Projektion 203

14.15.7 Aggregatfunktionen (Count(), Min(), Max(), Average(), Sum()) 203

14.15.8 Gruppierungen (GroupBy) 204

14.15.9 Einzelobjekte (SingleOrDefault(), FirstOrDefault()) 204

14.15.10 Verbundene Objekte (Include()) 205

14.15.11 Inner Join (Join) 206

14.15.12 Cross Join (Kartesisches Produkt) 206

14.15.13 Join mit Gruppierung 207

14.15.14 Unter-Abfragen (Sub-Select) 208

14.16 Lokaler Objektzwischenspeicher in der Kontextklasse 209

14.16.1 Wirkung des Zwischenspeichers 209

14.16.2 Neuladen veralterter Objekte (Reload) 212

14.16.3 Neuladen gelöschter Objekte 214

14.16.4 Ein typischer Fehler 215

14.16.5 Den Zwischenspeicher verwalten 217

15 Objektbeziehungen und Ladestrategien 218

15.1 Überblick über die Ladestrategien 218

15.2 Standardverhalten 218

15.3 Lazy Loading 220

15.3.1 Aktivierung des Lazy Loading 220

15.3.2 Gefahren von Lazy Loading 222

15.3.3 Lazy Loading ohne Proxyklassen 223

15.4 Explizites Nachladen (Explicit Loading) 226

15.5 Eager Loading 228

15.6 Relationship Fixup 231

15.6.1 Beispiel für Fall 1 232

15.6.2 Beispiel für Fall 2 233

15.6.3 Beispiel für Fall 3 234

15.7 Preloading mit Relationship Fixup 236

15.8 Objektbeziehungen und lokaler Zwischenspeicher 240

16 Einfügen, Löschen und Ändern 245

16.1 Speichern mit SaveChanges() 245

16.2 Änderungsverfolgung auch für Unterobjekte 247

16.3 Zusammenfassen von Befehlen (Batching) 248

16.4 Das Foreach-Problem 249

16.5 Objekte hinzufügen mit Add() 251

16.6 Verbundene Objekte anlegen 253

16.7 Verbundene Objekte ändern / Relationship Fixup 256

16.8 Widersprüchliche Beziehungen 258

16.8.1 Objekte löschen mit Remove() 263

16.8.2 Löschen mit einem Attrappen-Objekt 265

16.8.3 Massenlöschen 266

16.9 Datenbanktransaktionen 267

16.9.1 Transaktion in einer Kontextinstanz 267

16.9.2 Transaktion über mehrere Kontextinstanzen ohne TransactionScope 268

16.9.3 Transaktion über mehrere Kontextinstanzen mit TransactionScope 270

16.10 Change Tracker abfragen 272

16.10.1 POCOs 272

16.10.2 Zustand eines Objekts 273

16.10.3 Liste aller geänderten Objekte 275

17 Datenänderungskonflikte (Concurrency) 278

17.1 Rückblick 278

17.2 Im Standard keine Konflikterkennung 279

17.3 Optimistisches Sperren / Konflikterkennung 280

17.4 Konflikterkennung für alle Eigenschaften 281

17.5 Konflikteinstellung per Konvention 282

17.6 Fallweise Konflikteinstellung 283

17.7 Zeitstempel (Timestamp) 283

17.8 Konflikte auflösen 285

17.9 Pessimistisches Sperren bei Entity Framework Core 289

18 Protokollierung (Logging) 293

18.1 Verwendung der Erweiterungsmethode Log() 293

18.2 Implementierung der Log()-Erweiterungsmethode 295

18.3 Protokollierungskategorien 299

18.4 EnableSensitiveDataLogging 300

19 Asynchrone Programmierung 301

19.1 Asynchrone Erweiterungsmethoden 301

19.2 ToListAsync() 301

19.3 SaveChangesAsync() 302

19.4 ForeachAsync() 303

20 Dynamische LINQ-Abfragen 305

20.1 Schrittweises zusammensetzen von LINQ-Abfragen 305

20.2 Expression Trees 306

20.3 Dynamic LINQ 309

21 Daten lesen und ändern mit SQL, Stored Procedures und Table Valued Functions 312

21.1 Abfragen mit FromSqlRaw() und FromSqlInterpolated() 312

21.2 Zusammensetzbarkeit von LINQ und SQL 314

21.3 Stored Procedures und Table Valued Functions 316

21.4 Nicht-Entitätsklassen als Ergebnismenge 317

21.5 Erweiterungsmethode ExecuteSqlQuery() 319

21.6 SQL-DML-Befehle ohne Resultset 319

22 Weitere Tipps und Tricks zum Mapping 321

22.1 Shadow Properties 321

22.1.1 Automatische Shadow Properties 321

22.1.2 Festlegung eines Shadow Property 322

22.1.3 Ausgabe aller Shadow Properties einer Entitätsklasse 322

22.1.4 Lesen und Ändern eines Shadow Property 323

22.1.5 LINQ-Abfragen mit Shadow Properties 324

22.1.6 Praxisbeispiel: Automatisches Setzen bei jedem Speichern 324

22.1.7 Praxisbeispiel: Erweitern der Tabellen zur Betriebszeit der Anwendung 325

22.2 Berechnete Spalten (Computed Columns) 327

22.2.1 Automatisches SELECT 328

22.2.2 Praxistipp: Spalten mit einer Berechnungsformel anlegen 328

22.2.3 Spalten mit einer Berechnungsformel nutzen 330

22.2.4 Spalten mit einer Berechnungsformel beim Reverse Engineering 331

22.3 Standardwerte (Default Values) 331

22.3.1 Standardwerte beim Forward Engineering festlegen 332

22.3.2 Standardwerte verwenden 332

22.3.3 Praxistipp: Standardwerte schon beim Anlegen des Objekts vergeben 334

22.3.4 Standardwerte beim Reverse Engineering 335

22.4 Tabellenaufteilung (Table Splitting) mit Owned Types 335

22.4.1 Owned Types 336

22.4.2 Weitere Möglichkeiten mit Owned Types 343

22.4.3 Daten schreiben und lesen mit Owned Types 344

22.4.4 Einschränkungen bei Owned Types 346

22.5 Sequenzobjekte (Sequences) 347

22.5.1 Was sind Sequenzen? 347

22.5.2 Erstellen von Sequenzen mit T-SQL 348

22.5.3 Erstellen von Sequenzen beim Forward Engineering 350

22.5.4 Sequenzen im Einsatz 351

22.6 Alternative Schlüssel 354

22.6.1 Alternative Schlüssel definieren 355

22.6.2 Alternative Schlüssel im Einsatz 357

22.7 Kaskadierendes Löschen (Cascading Delete) 360

22.7.1 Löschoptionen in Entity Framework Core 361

22.7.2 Beispiel 363

22.8 Abbildung von Datenbanksichten (Views) 368

22.8.1 Datenbanksicht anlegen 369

22.8.2 Entitätsklasse für die Datenbanksicht anlegen 369

22.8.3 Einbinden der Entitätsklasse in die Kontextklasse 370

22.8.4 Verwendung der Datenbanksicht 371

22.8.5 Herausforderung: Migrationen 372

22.9 Wertkonvertierungen (Value Converter) 374

22.9.1 Einschränkungen 375

22.9.2 Beispiel 1: Konvertierung zwischen String und Boolean 375

22.9.3 Beispiel 2: Konvertierung zwischen Aufzählungstyp und String 378

22.10 Datenbefüllung bei der Schemamigration (Data Seeding) 382

22.10.1 Herausforderung Shadow Properties 385

22.10.2 Bug bei berechneten Spalten 387

23 Weitere Tipps und Tricks zu LINQ und SQL 389

23.1 Globale Abfragefilter (ab Version 2.0) 389

23.1.1 Filter definieren 389

23.1.2 Filter nutzen 389

23.1.3 Praxistipp: Filter ignorieren 390

23.1.4 Globale Abfragefilter bei SQL-Abfragen (ab Version 2.0) 390

23.1.5 Globale Abfragefilter bei Stored Procedures und Table Valued Functions 391

23.2 Zukünftige Abfragen (Future Queries) 391

23.2.1 Konzept der Future Queries 391

23.2.2 Future() 392

23.2.3 FutureValue() 393

23.2.4 Bug in Verbindung mit EF Profiler 394

23.3 Befehlsverfolgung mit Query Tags (ab Version 2.2) 395

23.3.1 TagWith() 395

23.3.2 Einsatz von TagWith() 395

23.3.3 Einschränkungen 402

23.4 Benachrichtigungen bei Datenänderungen (Query Notifications) 402

23.4.1 SqlDependency für Microsoft SQL Server 402

23.4.2 Aufbau des SQL-Befehls 403

23.4.3 Query Notification in einer Konsolenanwendungen 404

23.4.4 Diagnosemöglichkeiten 407

23.4.5 Query Notification in einer Desktop-Anwendungen 408

24 Leistungsoptimierung (Performance Tuning) 414

24.1 Vorgehensmodell zur Leistungsoptimierung bei Entity Framework Core 414

24.2 Best Practices für Ihre eigenen Leistungstests 414

24.3 Leistungsvergleich verschiedener Datenzugriffstechniken in .NET 415

24.4 Objektzuweisung optimieren 416

24.5 Massenoperationen 419

24.5.1 Einzellöschen 419

24.5.2 Optimierung durch Batching 419

24.5.3 Löschen ohne Laden mit Pseudo-Objekten 421

24.5.4 Einsatz von klassischem SQL anstelle des Entity Framework Core-APIs 422

24.5.5 Lamdba-Ausdrücke für Massenlöschen mit EFPlus 424

24.5.6 Massenaktualisierung mit EFPlus 426

24.5.7 Optionen für Update() und Delete() bei EFPlus 426

24.6 Leistungsoptimierung durch No-Tracking 427

24.6.1 No-Tracking aktivieren 427

24.6.2 No-Tracking fast immer möglich 428

24.6.3 No-Tracking im änderbaren Datagrid 431

24.6.4 QueryTrackingBehavior und AsTracking() 442

24.6.5 Konsequenzen des No-Tracking-Modus 443

24.6.6 Best Practices 443

24.7 Leistungsoptimierung durch Compiled Queries 444

24.7.1 Konzept einer Compiled Query 444

24.7.2 Compiled Queries in Entity Framework Core 445

24.7.3 Leistungstest 445

24.7.4 Einschränkungen 449

24.8 Auswahl der besten Ladestrategie 450

24.9 Zwischenspeicherung (Caching) 450

24.9.1 MemoryCache 451

24.9.2 CacheManager 453

24.10 Second-Level-Caching mit EFPlus 460

24.10.1 Einrichten des Second-Level-Cache 461

24.10.2 Verwenden des Second-Level-Cache 461

25 Softwarearchitektur mit Entity Framework Core 464

25.1 Monolithisches Modell 464

25.2 Entity Framework Core als Datenzugriffsschicht 465

25.3 Reine Geschäftslogik 466

25.4 Geschäftsobjekt- und ViewModel-Klassen 467

25.5 Verteilte Systeme 468

25.6 Fazit 471

26 Zusatzwerkzeuge 472

26.1 Entity Framework Core Power Tools 472

26.1.1 Funktionsüberblick 472

26.1.2 Reverse Engineering mit Entity Framework Core Power Tools 473

26.1.3 Schemamigrationen mit Entity Framework Core Power Tools 478

26.1.4 Diagramme mit Entity Framework Core Power Tools 480

26.2 LINQPad 481

26.2.1 Aufbau von LINQPad 482

26.2.2 Datenquellen einbinden 482

26.2.3 LINQ-Befehle ausführen 486

26.2.4 Abspeichern 488

26.2.5 Weitere LINQPad-Treiber 488

26.2.6 Interaktive Programmcodeeingabe 489

26.2.7 Fazit zu LINQPad 490

26.3 Entity Developer 490

26.3.1 Auswahl der ORM-Technik 491

26.3.2 Reverse Engineering mit Entity Developer 493

26.3.3 Forward Engineering mit Entity Developer 502

26.4 Entity Framework Profiler 507

26.4.1 Einbinden des Entity Framework Profilers 509

26.4.2 Befehle überwachen mit Entity Framework Profiler 509

26.4.3 Warnungen vor potenziellen Problemen 512

26.4.4 Analysefunktionen 513

26.4.5 Kommandozeilenunterstützung und API 514

26.4.6 Fazit zu Entity Framework Profiler 514

27 Zusatzkomponenten 515

27.1 Oracle-Treiber von DevArt (dotConnect for Oracle) 515

27.1.1 Unterstützte Oracle-Versionen 515

27.1.2 Installation 515

27.1.3 Visual Studio-Integration 517

27.1.4 Datenbanktreibername 520

27.1.5 Entity Framework Core-Werkzeuge 520

27.1.6 Kontextklasse 521

27.1.7 Entitätsklassen 521

27.1.8 Datentypen 521

27.2 Entity Framework Plus (EFPlus) 523

27.3 Second-Level-Caching mit EFSecondLevelCache.Core 524

27.4 Objekt-Objekt-Mapping mit AutoMapper 524

27.4.1 Objekt-Objekt-Mapping per Reflection 526

27.4.2 AutoMapper 528

27.4.3 Beispielszenario 529

27.4.4 Abbildungen konfigurieren 531

27.4.5 Abbildung ausführen mit Map() 531

27.4.6 Nicht-statisches API 532

27.4.7 Abbildungskonventionen 532

27.4.8 Abbildungskonventionen ändern 534

27.4.9 Profilklassen 534

27.4.10 Verbundene Objekte 535

27.4.11 Manuelle Abbildungen 535

27.4.12 Typkonvertierungen 538

27.4.13 Objektmengen 539

27.4.14 Vererbung 540

27.4.15 Generische Klassen 543

27.4.16 Zusatzaktionen vor und nach dem Mapping 545

27.4.17 Geschwindigkeit 547

27.4.18 Fazit zu AutoMapper 548

27.5 Andere Erweiterungen 548

28 Praxislösungen 550

28.1 Entity Framework Core in einer ASP.NET Core-Anwendung 550

28.1.1 Das Fallbeispiel "MiracleList" 550

28.1.2 Architektur 554

28.1.3 Entitätsklassen 558

28.1.4 Entity Framework Core-Kontextklasse 560

28.1.5 Lebensdauer der Kontextklasse in ASP.NET Core-Anwendungen 563

28.1.6 Geschäftslogik 564

28.1.7 WebAPI 573

28.1.8 Verwendung von Entity Framework Core per Dependency Injection 583

28.1.9 Praxistipp: Kontextinstanzpooling (DbContext Pooling) 586

28.2 DevOps mit Entity Framework (Continous Integration und Continous Delivery) 586

28.2.1 Unit Tests und Integrationstests mit Entity Framework Core 587

28.2.2 In-Memory-Treiber 587

28.2.3 SQLite- In-Memory-Treiber 590

28.2.4 Entity Framework Core beim serverseitigen Build (Continous Integration) 592

28.2.5 Entity Framework Core beim automatischen Release (Continous Delivery) 596

28.3 Entity Framework Core in einer Universal Windows Platform App 597

28.3.1 Das Fallbeispiel "MiracleList Light" 597

28.3.2 Architektur 598

28.3.3 Entitätsklassen 599

28.3.4 Entity Framework Core-Kontextklasse 601

28.3.5 Startcode 601

28.3.6 Erzeugte Datenbank 602

28.3.7 Datenzugriffscode 604

28.3.8 Benutzeroberfläche 608

28.4 Entity Framework Core in einer Xamarin-Cross-Platform-App 609

28.4.1 Das Fallbeispiel "MiracleList Light" 609

28.4.2 Architektur 611

28.4.3 Entitätsklassen 613

28.4.4 Entity Framework Core-Kontextklasse 614

28.4.5 Startcode 615

28.4.6 Erzeugte Datenbank 616

28.4.7 Datenzugriffscode 616

28.4.8 Benutzeroberfläche 619

28.5 N:M-Beziehungen zu sich selbst 621

29 Quellen im Internet 628

30 Stichwortverzeichnis (Index) 629


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. Free App. 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), MOBI (for Kindle) and in the free Leanpub App (for Mac, Windows, iOS and Android). 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