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

Moderne Datenzugriffslösungen mit Entity Framework Core 2.1/2.2

Datenbankprogrammierung mit C# in .NET/.NET Core/Xamarin

Über das Buch

Entity Framework Core ist der neue Objekt-Relationale Mapper und die aktuelle Datenzugriffstechnik von Microsoft für .NET-, .NET Core-, UWP- und Xamarin-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, Microsoft SQL Server und SQLite, 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 Windows Universal Apps, Xamarin und ASP.NET Core 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, .NET Core, UWP Apps oder Xamarin 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.

  • Teile dieses Buch

  • Kategorien

    • Databases
    • Software
    • .NET
    • SQL Server
    • APIs
    • C#
    • ASP.NET
    • Oracle
    • Microsoft Azure
  • Rückmeldung

    Contact the Author(s)

Ü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. Seine persönlichen Schwerpunkte sind .NET-Anwendungen mit C# und die Webanwendungsentwicklung mit JavaScript/TypeScript.

Durch seine Auftritte auf zahlreichen nationalen und internationalen Fachkonferenzen sowie mehr als 80 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. Er hält regelmässig Vorträge auf Fachkonferenzen.

Durch seine Vermittlungskompetenz hat er sich den Spitznamen "DOTNET-DOKTOR" verdient. Von Microsoft wird er für sein .NET-Fachwissen seit nunmehr 18 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

Nur das E-Book (PDF)

Nur das E-Book ohne Programmcodebeispiele

  • PDF

  • Deutsch

$35.00
Minimal-Preis
$44.00
Empfohlener Preis
E-Book (PDF) und Programmcodebeispiele

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

  • PDF

  • Deutsch

$44.00
Minimal-Preis
$49.00
Empfohlener Preis

Dieses Buch ist Teil folgender Pakete:

$74.00
Einzeln gekauft
$50.00
Paket Preis

Inhaltsverzeichnis

1 Inhaltsverzeichnis 4

2 Vorwort 18

3 Über den Autor 19

4 Über dieses Buch 20

4.1 Versionsgeschichte dieses Buchs 20

4.2 Bezugsquelle für Aktualisierungen 26

4.3 Geplante Kapitel 26

4.4 Programmiersprache in diesem Buch 27

5 Fallbeispiele in diesem Buch 28

5.1 Entitäten 28

5.2 Englische Version des Beispiels 32

5.3 Anwendungsarten in diesem Buch 32

5.4 Hilfsroutinen zur Konsolenausgabe 33

6 Programmcodebeispiel zum Download 39

7 Was ist Entity Framework Core? 40

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

7.2 ORM in der .NET-Welt 41

7.3 Versionsgeschichte von Entity Framework Core 42

7.4 Unterstützte Betriebssysteme 44

7.5 Unterstützte .NET-Versionen 44

7.6 Unterstützte Visual Studio-Versionen 45

7.7 Unterstützte Datenbanken 45

7.8 Funktionsumfang von Entity Framework Core 47

7.9 Funktionen, die dauerhaft entfallen 47

7.10 Funktionen, die Microsoft bald nachrüsten will 48

7.11 Hohe Priorität, aber nicht kritisch 49

7.12 Neue Funktionen in Entity Framework Core 50

7.13 Einsatzszenarien für Entity Framework Core 50

7.14 Migration von ADO.NET Entity Framework zu Entity Framework Core 51

8 Installation von Entity Framework Core 53

8.1 Nuget-Pakete 53

8.2 Paketinstallation 55

8.3 Aktualisierung auf eine neue Version 59

9 Konzepte von Entity Framework Core 64

9.1 Vorgehensmodelle bei Entity Framework Core 64

9.2 Artefakte bei Entity Framework Core 67

10 Reverse Engineering bestehender Datenbanken 69

10.1 Reverse Engineering-Werkzeuge 69

10.2 Vorbereiten des Reverse Engineering mit PowerShell-Befehlen 69

10.3 Codegenerierung 71

10.4 Generierter Programmcode 75

10.5 Beispiel-Client 80

10.6 .NET Core-Tool 81

10.7 Schwächen des Reverse Engineering 83

11 Forward Engineering für neue Datenbanken 85

11.1 Zwei Klassentypen beim Forward Engineering 85

11.2 Beispiele in diesem Kapitel 85

11.3 Regeln für die selbsterstellten Entitätsklassen 86

11.3.1 Nuget-Pakete 86

11.3.2 Properties 87

11.3.3 Datentypen 87

11.3.4 Beziehungen (Master-Detail) 87

11.3.5 Vererbung 90

11.3.6 Primärschlüssel 90

11.3.7 Beispiele 90

11.4 Regeln für die selbsterstellte Kontextklasse 93

11.4.1 Nuget-Pakete 93

11.4.2 Basisklasse 94

11.4.3 Konstruktor 94

11.4.4 Verweise zu den Entitätsklassen 94

11.4.5 Provider und Verbindungszeichenfolge 94

11.4.6 Beispiel für eine selbsterstellte Kontextklasse 96

11.4.7 Verwendung von DbContextOptions 96

11.4.8 Eigenes Datenbankverbindungsamanagement 98

11.4.9 Flexible Konfiguration der Kontextklasse 98

11.4.10 Thread-Sicherheit 98

11.5 Regeln für die Datenbankschemagenerierung 98

11.6 Beispiel-Client 99

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

11.8 Das erzeugte Datenmodell 102

12 Anpassung des Datenbankschemas 105

12.1 Beispiele in diesem Kapitel 105

12.2 Konvention versus Konfiguration 105

12.3 Persistente versus transiente Klassen 106

12.4 Namen im Datenbankschema 107

12.5 Reihenfolge der Spalten in einer Tabelle 108

12.6 Spaltentypen/Datentypen 109

12.7 Typkonvertierungen 110

12.8 Pflichtfelder und optionale Felder 110

12.9 Feldlängen 111

12.10 Primärschlüssel 111

12.11 Beziehungen und Fremdschlüssel 111

12.12 Optionale Beziehungen und Pflichtbeziehungen 112

12.13 Uni- und Bidirektionale Beziehungen 114

12.14 1:1-Beziehungen 115

12.15 Indexe festlegen 116

12.16 Vererbung 117

12.16.1 Vererbungsstrategien 117

12.16.2 TPH und TPCT in Entity Framework Core 119

12.16.3 Mischung von TPCT und TPH 127

12.16.4 Konsistenzprobleme bei TPH 128

12.16.5 Erzwingen von TPH 129

12.16.6 Konfiguration der Diskriminatorspalte bei TPH 129

12.17 Syntaxoptionen für das Fluent-API 131

12.17.1 Sequentielle Konfiguration 131

12.17.2 Strukturierung durch Statement Lambdas 131

12.17.3 Strukturierung durch Unterroutinen 132

12.17.4 Strukturierung durch Konfigurationsklassen 133

12.18 Massenkonfiguration mit dem Fluent-API 134

13 Datenbankschemamigrationen 135

13.1 Anlegen der Datenbank zur Laufzeit 135

13.2 Schemamigrationen zur Entwicklungszeit 136

13.3 Befehle für die Schemamigrationen 136

13.4 ef.exe 137

13.5 Add-Migration 138

13.6 Update-Database 142

13.7 Schemamigrationen bei der Installation 144

13.8 Remove-Migration 144

13.9 Script-Migration 144

13.10 Schemamigrationen zur Laufzeit 145

13.10.1 Verwendung von Migrate() 145

13.10.2 IMigrator-Service 146

13.10.3 Informationen zum Migrationsstand 146

13.10.4 Praxiseinsatz: Ein Kommandozeilenwerkzeug für die Schemamigration 147

13.11 Schemamigrationsszenarien 151

13.11.1 Neue Tabellen und Spalten 151

13.11.2 Tabellen oder Spalten löschen 153

13.11.3 Tabellen oder Spalten umbenennen 153

13.11.4 Spaltendatentyp ändern 153

13.11.5 NULL-Werte verbieten 154

13.11.6 Kardinalitäten ändern 155

13.11.7 Andere Datenbankartefakte anlegen 156

13.11.8 SQL-Skriptdateien ausführen 158

13.11.9 Eigenständige Entitäten bilden 159

13.12 Weitere Möglichkeiten 162

13.13 Probleme bei der Schemamigration in Verbindung mit TFS 163

13.14 Startverhalten von Entity Framework Core 163

14 Daten lesen mit LINQ 164

14.1 Kontextklasse 164

14.2 LINQ-Abfragen 164

14.3 Schrittweises Zusammensetzung von LINQ-Abfragen 167

14.4 Einsatz von var 168

14.5 Repository-Pattern 168

14.6 LINQ-Abfragen mit Paging 172

14.7 Projektionen 173

14.7.1 Projektion auf einen Entitätstypen 174

14.7.2 Projektionen auf einen anonymen Typen 174

14.7.3 Projektionen auf einen beliebigen Typen 176

14.8 Abfrage nach Einzelobjekten 177

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

14.10 Gruppierungen 179

14.11 Umgehung für das GroupBy-Problem 181

14.11.1 Mapping auf Nicht-Entitätstypen 181

14.11.2 Entitätsklasse für die Datenbanksicht anlegen 182

14.11.3 Einbinden der Entitätsklasse in die Kontextklasse 182

14.11.4 Verwendung der Pseudo-Entitätsklasse 183

14.11.5 Herausforderung: Migrationen 184

14.11.6 Gruppierungen mit Datenbanksichten 185

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

14.13 Falsche Befehlsreihenfolge 187

14.14 Eigene Funktionen in LINQ 188

14.15 Kurzübersicht über die LINQ-Syntax 189

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

14.15.2 Bedingungen (where) 190

14.15.3 Bedingungen mit Mengen (in) 191

14.15.4 Sortierungen (orderby) 191

14.15.5 Paging (Skip() und Take()) 191

14.15.6 Projektion 192

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

14.15.8 Gruppierungen (GroupBy) 193

14.15.9 Einzelobjekte (SingleOrDefault(), FirstOrDefault()) 193

14.15.10 Verbundene Objekte (Include()) 194

14.15.11 Inner Join (Join) 195

14.15.12 Cross Join (Kartesisches Produkt) 195

14.15.13 Join mit Gruppierung 196

14.15.14 Unter-Abfragen (Sub-Select) 196

14.16 Lokaler Objektzwischenspeicher in der Kontextklasse 197

15 Objektbeziehungen und Ladestrategien 202

15.1 Überblick über die Ladestrategien 202

15.2 Standardverhalten 202

15.3 Lazy Loading 204

15.3.1 Aktivierung des Lazy Loading 204

15.3.2 Gefahren von Lazy Loading 206

15.3.3 Lazy Loading ohne Proxyklassen 207

15.4 Explizites Nachladen (Explicit Loading) 210

15.5 Eager Loading 212

15.6 Relationship Fixup 215

15.6.1 Beispiel für Fall 1 216

15.6.2 Beispiel für Fall 2 217

15.6.3 Beispiel für Fall 3 218

15.7 Preloading mit Relationship Fixup 220

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

16.1 Speichern mit SaveChanges() 225

16.2 Änderungsverfolgung auch für Unterobjekte 227

16.3 Zusammenfassen von Befehlen (Batching) 228

16.4 Das Foreach-Problem 229

16.5 Objekte hinzufügen mit Add() 230

16.6 Verbundene Objekte anlegen 232

16.7 Verbundene Objekte ändern / Relationship Fixup 235

16.8 Widersprüchliche Beziehungen 237

16.8.1 Objekte löschen mit Remove() 242

16.8.2 Löschen mit einem Attrappen-Objekt 244

16.8.3 Massenlöschen 245

16.9 Datenbanktransaktionen 246

16.9.1 Transaktion in einer Kontextinstanz 246

16.9.2 Transaktion über mehrere Kontextinstanzen ohne TransactionScope 247

16.9.3 Transaktion über mehrere Kontextinstanzen mit TransactionScope 249

16.10 Change Tracker abfragen 251

16.10.1 Zustand eines Objekts 251

16.10.2 Liste aller geänderten Objekte 253

17 Datenänderungskonflikte (Concurrency) 256

17.1 Rückblick 256

17.2 Im Standard keine Konflikterkennung 257

17.3 Optimistisches Sperren / Konflikterkennung 258

17.4 Konflikterkennung für alle Eigenschaften 259

17.5 Konflikteinstellung per Konvention 260

17.6 Fallweise Konflikteinstellung 261

17.7 Zeitstempel (Timestamp) 261

17.8 Konflikte auflösen 263

17.9 Pessimistisches Sperren bei Entity Framework Core 267

18 Protokollierung (Logging) 271

18.1 Verwendung der Erweiterungsmethode Log() 271

18.2 Implementierung der Log()-Erweiterungsmethode 273

18.3 Protokollierungskategorien 277

18.4 EnableSensitiveDataLogging 278

19 Asynchrone Programmierung 279

19.1 Asynchrone Erweiterungsmethoden 279

19.2 ToListAsync() 279

19.3 SaveChangesAsync() 280

19.4 ForeachAsync() 281

20 Dynamische LINQ-Abfragen 283

20.1 Schrittweises zusammensetzen von LINQ-Abfragen 283

20.2 Expression Trees 284

20.3 Dynamic LINQ 287

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

21.1 Abfragen mit FromSql() 290

21.2 Zusammensetzbarkeit von LINQ und SQL 292

21.3 Stored Procedures und Table Valued Functions 293

21.4 Nicht-Entitätsklassen als Ergebnismenge 295

21.5 Erweiterungsmethode ExecuteSqlQuery() 296

21.6 SQL-DML-Befehle ohne Resultset 297

22 Weitere Tipps und Tricks zum Mapping 298

22.1 Shadow Properties 298

22.1.1 Automatische Shadow Properties 298

22.1.2 Festlegung eines Shadow Property 299

22.1.3 Ausgabe aller Shadow Properties einer Entitätsklasse 299

22.1.4 Lesen und Ändern eines Shadow Property 299

22.1.5 LINQ-Abfragen mit Shadow Properties 301

22.1.6 Praxisbeispiel: Automatisches Setzen bei jedem Speichern 301

22.1.7 Praxisbeispiel: Erweitern der Tabellen zur Betriebszeit der Anwendung 302

22.2 Berechnete Spalten (Computed Columns) 304

22.2.1 Automatisches SELECT 304

22.2.2 Praxistipp: Spalten mit einer Berechnungsformel anlegen 305

22.2.3 Spalten mit einer Berechnungsformel nutzen 306

22.2.4 Spalten mit einer Berechnungsformel beim Reverse Engineering 308

22.3 Standardwerte (Default Values) 308

22.3.1 Standardwerte beim Forward Engineering festlegen 309

22.3.2 Standardwerte verwenden 309

22.3.3 Praxistipp: Standardwerte schon beim Anlegen des Objekts vergeben 311

22.3.4 Standardwerte beim Reverse Engineering 312

22.4 Tabellenaufteilung (Table Splitting) mit Owned Types 312

22.4.1 Owned Types 313

22.4.2 Weitere Möglichkeiten mit Owned Types 319

22.4.3 Daten schreiben und lesen mit Owned Types 321

22.4.4 Einschränkungen bei Owned Types 322

22.5 Sequenzobjekte (Sequences) 323

22.5.1 Was sind Sequenzen? 323

22.5.2 Erstellen von Sequenzen mit T-SQL 324

22.5.3 Erstellen von Sequenzen beim Forward Engineering 326

22.5.4 Sequenzen im Einsatz 327

22.6 Alternative Schlüssel 330

22.6.1 Alternative Schlüssel definieren 331

22.6.2 Alternative Schlüssel im Einsatz 333

22.7 Kaskadierendes Löschen (Cascading Delete) 336

22.7.1 Löschoptionen in Entity Framework Core 336

22.7.2 Beispiel 338

22.8 Abbildung von Datenbanksichten (Views) 343

22.8.1 Datenbanksicht anlegen 343

22.8.2 Entitätsklasse für die Datenbanksicht anlegen 344

22.8.3 Einbinden der Entitätsklasse in die Kontextklasse 344

22.8.4 Verwendung der Datenbanksicht 345

22.8.5 Herausforderung: Migrationen 347

22.9 Wertkonvertierungen (Value Converter) 348

22.9.1 Einschränkungen 349

22.9.2 Beispiel 1: Konvertierung zwischen String und Boolean 349

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

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

22.10.1 Herausforderung Shadow Properties 359

22.10.2 Bug bei berechneten Spalten 361

23 Weitere Tipps und Tricks zu LINQ und SQL 363

23.1 Globale Abfragefilter (ab Version 2.0) 363

23.1.1 Filter definieren 363

23.1.2 Filter nutzen 363

23.1.3 Praxistipp: Filter ignorieren 364

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

23.1.5 Globale Abfragefilter bei Stored Procedures und Table Valued Functions 365

23.2 Zukünftige Abfragen (Future Queries) 365

23.2.1 Konzept der Future Queries 365

23.2.2 Future() 366

23.2.3 FutureValue() 367

23.2.4 Bug in Verbindung mit EF Profiler 368

23.3 Query Tags (ab Version 2.2) 369

23.3.1 Einsatz von TagWith() 369

23.3.2 Einschränkungen 372

23.4 Benachrichtigungen bei Datenänderungen (Query Notifications) 372

23.4.1 SqlDependency für Microsoft SQL Server 372

23.4.2 Aufbau des SQL-Befehls 373

23.4.3 Query Notification in einer Konsolenanwendungen 374

23.4.4 Diagnosemöglichkeiten 377

23.4.5 Query Notification in einer Desktop-Anwendungen 378

24 Leistungsoptimierung (Performance Tuning) 384

24.1 Vorgehensmodell zur Leistungsoptimierung bei Entity Framework Core 384

24.2 Best Practices für Ihre eigenen Leistungstests 384

24.3 Leistungsvergleich verschiedener Datenzugriffstechniken in .NET 385

24.4 Objektzuweisung optimieren 386

24.5 Massenoperationen 389

24.5.1 Einzellöschen 389

24.5.2 Optimierung durch Batching 389

24.5.3 Löschen ohne Laden mit Pseudo-Objekten 391

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

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

24.5.6 Massenaktualisierung mit EFPlus 396

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

24.6 Leistungsoptimierung durch No-Tracking 397

24.6.1 No-Tracking aktivieren 397

24.6.2 No-Tracking fast immer möglich 398

24.6.3 No-Tracking im änderbaren Datagrid 401

24.6.4 QueryTrackingBehavior und AsTracking() 409

24.6.5 Konsequenzen des No-Tracking-Modus 411

24.6.6 Best Practices 411

24.7 Auswahl der besten Ladestrategie 412

24.8 Zwischenspeicherung (Caching) 412

24.8.1 MemoryCache 413

24.8.2 CacheManager 415

24.9 Second-Level-Caching mit EFPlus 422

24.9.1 Einrichten des Second-Level-Cache 423

24.9.2 Verwenden des Second-Level-Cache 423

25 Softwarearchitektur mit Entity Framework Core 426

25.1 Monolithisches Modell 426

25.2 Entity Framework Core als Datenzugriffsschicht 427

25.3 Reine Geschäftslogik 428

25.4 Geschäftsobjekt- und ViewModel-Klassen 429

25.5 Verteilte Systeme 430

25.6 Fazit 433

26 Zusatzwerkzeuge 434

26.1 Entity Framework Core Power Tools 434

26.1.1 Funktionsüberblick 434

26.1.2 Reverse Engineering mit Entity Framework Core Power Tools 435

26.1.3 Schemamigrationen mit Entity Framework Core Power Tools 440

26.1.4 Diagramme mit Entity Framework Core Power Tools 442

26.2 LINQPad 443

26.2.1 Aufbau von LINQPad 444

26.2.2 Datenquellen einbinden 444

26.2.3 LINQ-Befehle ausführen 448

26.2.4 Abspeichern 450

26.2.5 Weitere LINQPad-Treiber 450

26.2.6 Interaktive Programmcodeeingabe 451

26.2.7 Fazit zu LINQPad 452

26.3 Entity Developer 452

26.3.1 Auswahl der ORM-Technik 453

26.3.2 Reverse Engineering mit Entity Developer 455

26.3.3 Forward Engineering mit Entity Developer 464

26.4 Entity Framework Profiler 469

26.4.1 Einbinden des Entity Framework Profilers 471

26.4.2 Befehle überwachen mit Entity Framework Profiler 471

26.4.3 Warnungen vor potenziellen Problemen 474

26.4.4 Analysefunktionen 475

26.4.5 Kommandozeilenunterstützung und API 476

26.4.6 Fazit zu Entity Framework Profiler 476

27 Zusatzkomponenten 477

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

27.1.1 Unterstützte Oracle-Versionen 477

27.1.2 Installation 477

27.1.3 Visual Studio-Integration 479

27.1.4 Datenbanktreibername 482

27.1.5 Entity Framework Core-Werkzeuge 482

27.1.6 Kontextklasse 483

27.1.7 Entitätsklassen 483

27.1.8 Datentypen 483

27.2 Entity Framework Plus (EFPlus) 485

27.2.1 Herausforderung Shadow Properties 488

27.2.2 Bug bei berechneten Spalten 490

27.3 Second-Level-Caching mit EFSecondLevelCache.Core 492

27.4 Objekt-Objekt-Mapping mit AutoMapper 492

27.4.1 Objekt-Objekt-Mapping per Reflection 494

27.4.2 AutoMapper 497

27.4.3 Beispielszenario 497

27.4.4 Abbildungen konfigurieren 499

27.4.5 Abbildung ausführen mit Map() 499

27.4.6 Nicht-statisches API 500

27.4.7 Abbildungskonventionen 500

27.4.8 Abbildungskonventionen ändern 502

27.4.9 Profilklassen 502

27.4.10 Verbundene Objekte 503

27.4.11 Manuelle Abbildungen 503

27.4.12 Typkonvertierungen 506

27.4.13 Objektmengen 507

27.4.14 Vererbung 508

27.4.15 Generische Klassen 511

27.4.16 Zusatzaktionen vor und nach dem Mapping 513

27.4.17 Geschwindigkeit 515

27.4.18 Fazit zu AutoMapper 516

27.5 Andere Erweiterungen 516

28 Praxislösungen 518

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

28.1.1 Das Fallbeispiel "MiracleList" 518

28.1.2 Architektur 522

28.1.3 Entitätsklassen 526

28.1.4 Entity Framework Core-Kontextklasse 528

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

28.1.6 Geschäftslogik 532

28.1.7 WebAPI 541

28.1.8 Verwendung von Entity Framework Core per Dependency Injection 551

28.1.9 Praxistipp: Kontextinstanzpooling (DbContext Pooling) 554

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

28.2.1 Unit Tests und Integrationstests mit Entity Framework Core 555

28.2.2 In-Memory-Treiber 555

28.2.3 SQLite- In-Memory-Treiber 558

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

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

28.3 Entity Framework Core in einer Universal Windows Platform App 565

28.3.1 Das Fallbeispiel "MiracleList Light" 565

28.3.2 Architektur 566

28.3.3 Entitätsklassen 567

28.3.4 Entity Framework Core-Kontextklasse 569

28.3.5 Startcode 569

28.3.6 Erzeugte Datenbank 570

28.3.7 Datenzugriffscode 572

28.3.8 Benutzeroberfläche 576

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

28.4.1 Das Fallbeispiel "MiracleList Light" 577

28.4.2 Architektur 579

28.4.3 Entitätsklassen 581

28.4.4 Entity Framework Core-Kontextklasse 582

28.4.5 Startcode 583

28.4.6 Erzeugte Datenbank 584

28.4.7 Datenzugriffscode 584

28.4.8 Benutzeroberfläche 587

28.5 N:M-Beziehungen zu sich selbst 589

29 Quellen im Internet 596

30 Stichwortverzeichnis (Index) 597

Die bedingungslose Leanpub Garantie: Kein Risiko, 100% Zufriedenheit

Innerhalb von 60 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.

Verdienen Sie $8 bei einem Kauf von $10 und $16 bei einem Kauf von $20

Wir zahlen 80% Tantiemen bei Käufen von $7,99 oder mehr und 80% Tantiemen abzüglich einer Pauschalgebühr von 50 Cent bei Käufen zwischen $0,99 und $7,98. Sie verdienen $8 bei einem Verkauf von $10 und $16 bei einem Verkauf von $20. Wenn wir also 5000 nicht zurückgegebene Exemplare Ihres Buches für $20 verkaufen, verdienen Sie $80,000.

(Ja, einige Autoren haben auf Leanpub bereits viel mehr verdient.)

Tatsächlich haben Autoren durch das Schreiben, Veröffentlichen und Verkaufen auf Leanpubüber 13 Millionen Dollar verdient.

Erfahren Sie mehr über das Schreiben auf Leanpub

Kostenlose Updates. Ohne DRM.

Mit dem Kauf auf Leanpub bekommst Du kostenlose Updates solange der Autor Änderungen vornimmt! Viele Autoren veröffentlichen ihre Bücher während des Schreibens. Alle Leser bekommen dann kostenlose Updates, egal wann sie das Buch gekauft haben oder wie viel sie bezahlt haben (auch wenn es kostenlos war).

Die meisten Leanpub Bücher sind erhältlich als PDF (für Computer) oder EPUB (für Handy, Tablet, Kindle). Die verfügbaren Formate sind oben rechts auf dieser Seite angezeigt.

Leanpub Bücher kommen ohne DRM Kopierschutz Firlefanz, sodass Du sie problemlos auf jedem unterstützten Gerät lesen kannst.

Erfahren Sie mehr über Leanpubs E-Book-Formate und wo Sie sie lesen können

Schreiben und veröffentlichen auf Leanpub

Autoren und Verleger nutzen Leanpub, um erstaunliche Fortschrittsbücher zu veröffentlichen und E-Books zu vervollständigen. Sie können auch auf Leanpub 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 Store, der sich auf den Verkauf von E-Books konzentriert. Leanpub ist eine magische Schreibmaschine für Autoren: Schreiben Sie einfach in Klartext, und um Ihr E-Book zu veröffentlichen, klicken Sie einfach auf eine Schaltfläche. Es ist wirklich so einfach.

Erfahren Sie mehr über das Schreiben auf Leanpub