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

Datenbankprogrammierung mit C# in .NET Core

Ü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

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)
  • PDF

  • Deutsch

$35.00
Minimal-Preis
$44.00
Empfohlener Preis
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.

  • PDF

  • Deutsch

$44.00
Minimal-Preis
$49.00
Empfohlener Preis

Inhaltsverzeichnis

1 Inhaltsverzeichnis 4

2 Vorwort 19

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 29

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 Webadresse für Downloads 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

7.16.1 Koexistenz 62

7.16.2 Umstellung 62

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 Nullable 96

11.3.5 Nullable Reference Types (Nullable Context) 96

11.3.6 Aufzählungstypen (Enumerationen) 97

11.3.7 Beziehungen (Master-Detail) 97

11.3.8 Vererbung 100

11.3.9 Primärschlüssel 100

11.3.10 Beispiele 100

11.4 Regeln für die selbsterstellte Kontextklasse 103

11.4.1 Nuget-Pakete 103

11.4.2 Basisklasse 104

11.4.3 Konstruktor 104

11.4.4 Verweise zu den Entitätsklassen 104

11.4.5 Provider und Verbindungszeichenfolge 104

11.4.6 Beispiel für eine selbsterstellte Kontextklasse 106

11.4.7 Verwendung von DbContextOptions 106

11.4.8 Eigenes Datenbankverbindungsamanagement 108

11.4.9 Flexible Konfiguration der Kontextklasse 108

11.4.10 Thread-Sicherheit 108

11.5 Regeln für die Datenbankschemagenerierung 108

11.6 Beispiel-Client 109

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

11.8 Das erzeugte Datenmodell 112

12 Anpassung des Datenbankschemas 115

12.1 Beispiele in diesem Kapitel 115

12.2 Konvention versus Konfiguration 115

12.3 Persistente versus transiente Klassen 116

12.4 Namen im Datenbankschema 117

12.4.1 Änderung der Tabellen- und Spaltennamen 117

12.4.2 Breaking Change in EF Core 3.0 118

12.5 Reihenfolge der Spalten in einer Tabelle 118

12.6 Spaltentypen/Datentypen 119

12.7 Typkonvertierungen 120

12.8 Pflichtfelder und optionale Felder 121

12.9 Feldlängen 121

12.10 Primärschlüssel 121

12.11 Beziehungen und Fremdschlüssel 122

12.12 Optionale Beziehungen und Pflichtbeziehungen 123

12.13 Uni- und Bidirektionale Beziehungen 125

12.14 1:1-Beziehungen 126

12.15 Indexe festlegen 127

12.16 Vererbung 128

12.16.1 Vererbungsstrategien 128

12.16.2 TPH und TPCT in Entity Framework Core 130

12.16.3 Mischung von TPCT und TPH 139

12.16.4 Konsistenzprobleme bei TPH 140

12.16.5 Erzwingen von TPH 141

12.16.6 Konfiguration der Diskriminatorspalte bei TPH 141

12.17 Syntaxoptionen für das Fluent-API 143

12.17.1 Sequentielle Konfiguration 143

12.17.2 Strukturierung durch Statement Lambdas 143

12.17.3 Strukturierung durch Unterroutinen 144

12.17.4 Strukturierung durch Konfigurationsklassen 145

12.18 Massenkonfiguration mit dem Fluent-API 146

13 Datenbankschemamigrationen 147

13.1 Anlegen der Datenbank zur Laufzeit 147

13.2 Schemamigrationen zur Entwicklungszeit 148

13.3 Befehle für die Schemamigrationen 148

13.4 ef.exe 149

13.5 Add-Migration 150

13.6 Update-Database 154

13.7 Schemamigrationen bei der Installation 156

13.8 Remove-Migration 156

13.9 Script-Migration 156

13.10 Schemamigrationen zur Laufzeit 157

13.10.1 Verwendung von Migrate() 157

13.10.2 IMigrator-Service 158

13.10.3 Informationen zum Migrationsstand 158

13.10.4 Praxiseinsatz: Ein Kommandozeilenwerkzeug für die Schemamigration 159

13.11 Schemamigrationsszenarien 163

13.11.1 Neue Tabellen und Spalten 163

13.11.2 Tabellen oder Spalten löschen 165

13.11.3 Tabellen oder Spalten umbenennen 165

13.11.4 Spaltendatentyp ändern 165

13.11.5 NULL-Werte verbieten 166

13.11.6 Kardinalitäten ändern 167

13.11.7 Andere Datenbankartefakte anlegen 168

13.11.8 SQL-Skriptdateien ausführen 170

13.11.9 Eigenständige Entitäten bilden 171

13.12 Weitere Möglichkeiten 174

13.13 Probleme bei der Schemamigration in Verbindung mit TFS 175

13.14 Startverhalten von Entity Framework Core 175

14 Daten lesen mit LINQ 176

14.1 Kontextklasse 176

14.2 LINQ-Abfragen 176

14.3 Schrittweises Zusammensetzung von LINQ-Abfragen 179

14.4 Einsatz von var 180

14.5 Repository-Pattern 180

14.6 LINQ-Abfragen mit Paging 184

14.7 Projektionen 185

14.7.1 Projektion auf einen Entitätstypen 186

14.7.2 Projektionen auf einen anonymen Typen 186

14.7.3 Projektionen auf einen beliebigen Typen 188

14.8 Abfrage nach Einzelobjekten 189

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

14.10 Gruppierungen 191

14.11 Umgehung für das GroupBy-Problem 192

14.11.1 Mapping auf Nicht-Entitätstypen 193

14.11.2 Entitätsklasse für die Datenbanksicht anlegen 194

14.11.3 Einbinden der Entitätsklasse in die Kontextklasse 194

14.11.4 Verwendung der Pseudo-Entitätsklasse 195

14.11.5 Herausforderung: Migrationen 195

14.11.6 Gruppierungen mit Datenbanksichten 197

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

14.13 Falsche Befehlsreihenfolge 200

14.14 Eigene Funktionen in LINQ 201

14.14.1 Eigene Funktionen in LINQ in Entity Framework Core 1.x und 2.x 201

14.14.2 Eigene Funktionen in LINQ seit Entity Framework Core 3.0 201

14.15 Kurzübersicht über die LINQ-Syntax 202

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

14.15.2 Bedingungen (where) 204

14.15.3 Bedingungen mit Mengen (in) 204

14.15.4 Sortierungen (orderby) 204

14.15.5 Paging (Skip() und Take()) 205

14.15.6 Projektion 205

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

14.15.8 Gruppierungen (GroupBy) 206

14.15.9 Einzelobjekte (SingleOrDefault(), FirstOrDefault()) 207

14.15.10 Verbundene Objekte (Include()) 207

14.15.11 Inner Join (Join) 208

14.15.12 Cross Join (Kartesisches Produkt) 209

14.15.13 Join mit Gruppierung 209

14.15.14 Unter-Abfragen (Sub-Select) 210

14.16 Lokaler Objektzwischenspeicher in der Kontextklasse 212

14.16.1 Wirkung des Zwischenspeichers 212

14.16.2 Neuladen veralterter Objekte (Reload) 216

14.16.3 Neuladen gelöschter Objekte 217

14.16.4 Ein typischer Fehler 219

14.16.5 Den Zwischenspeicher verwalten 220

15 Objektbeziehungen und Ladestrategien 222

15.1 Überblick über die Ladestrategien 222

15.2 Standardverhalten 222

15.3 Lazy Loading 224

15.3.1 Aktivierung des Lazy Loading 224

15.3.2 Gefahren von Lazy Loading 226

15.3.3 Lazy Loading ohne Proxyklassen 227

15.4 Explizites Nachladen (Explicit Loading) 230

15.5 Eager Loading 232

15.6 Relationship Fixup 235

15.6.1 Beispiel für Fall 1 236

15.6.2 Beispiel für Fall 2 237

15.6.3 Beispiel für Fall 3 238

15.7 Preloading mit Relationship Fixup 240

15.8 Objektbeziehungen und lokaler Zwischenspeicher 244

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

16.1 Speichern mit SaveChanges() 249

16.2 Änderungsverfolgung auch für Unterobjekte 251

16.3 Zusammenfassen von Befehlen (Batching) 252

16.4 Das Foreach-Problem 253

16.5 Objekte hinzufügen mit Add() 255

16.6 Verbundene Objekte anlegen 257

16.7 Verbundene Objekte ändern / Relationship Fixup 260

16.8 Widersprüchliche Beziehungen 262

16.8.1 Objekte löschen mit Remove() 267

16.8.2 Löschen mit einem Attrappen-Objekt 269

16.8.3 Massenlöschen 270

16.9 Datenbanktransaktionen 271

16.9.1 Transaktion in einer Kontextinstanz 271

16.9.2 Transaktion über mehrere Kontextinstanzen ohne TransactionScope 272

16.9.3 Transaktion über mehrere Kontextinstanzen mit TransactionScope 274

16.10 Change Tracker abfragen 276

16.10.1 POCOs 276

16.10.2 Zustand eines Objekts 277

16.10.3 Liste aller geänderten Objekte 279

17 Datenänderungskonflikte (Concurrency) 282

17.1 Rückblick 282

17.2 Im Standard keine Konflikterkennung 283

17.3 Optimistisches Sperren / Konflikterkennung 284

17.4 Konflikterkennung für alle Eigenschaften 285

17.5 Konflikteinstellung per Konvention 286

17.6 Fallweise Konflikteinstellung 287

17.7 Zeitstempel (Timestamp) 287

17.8 Konflikte auflösen 289

17.9 Pessimistisches Sperren bei Entity Framework Core 293

18 Protokollierung (Logging) 297

18.1 Verwendung der Erweiterungsmethode Log() 297

18.2 Implementierung der Log()-Erweiterungsmethode 299

18.3 Protokollierungskategorien 303

18.4 EnableSensitiveDataLogging 304

19 Asynchrone Programmierung 305

19.1 Asynchrone Erweiterungsmethoden 305

19.2 ToListAsync() 305

19.3 SaveChangesAsync() 306

19.4 ForeachAsync() 307

19.5 Asynchrone Streams mit AsAsyncEnumerable() 308

20 Dynamische LINQ-Abfragen 310

20.1 Schrittweises zusammensetzen von LINQ-Abfragen 310

20.2 Expression Trees 311

20.3 Dynamic LINQ 314

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

21.1 Abfragen mit FromSqlRaw() und FromSqlInterpolated() 317

21.2 Projektionen mit SQL auf Entitätsklassen 320

21.3 Projektionen auf von Entitätsklassen 320

21.4 Beliebige Resultsets mit SQL 323

21.5 Zusammensetzbarkeit von LINQ und SQL 324

21.6 Stored Procedures und Table Valued Functions 325

21.7 Erweiterungsmethode ExecuteSqlQuery() 327

21.8 SQL-DML-Befehle ohne Resultset 328

22 Weitere Tipps und Tricks zum Mapping 329

22.1 Shadow Properties 329

22.1.1 Automatische Shadow Properties 329

22.1.2 Festlegung eines Shadow Property 330

22.1.3 Ausgabe aller Shadow Properties einer Entitätsklasse 330

22.1.4 Lesen und Ändern eines Shadow Property 331

22.1.5 LINQ-Abfragen mit Shadow Properties 332

22.1.6 Praxisbeispiel: Automatisches Setzen bei jedem Speichern 332

22.1.7 Praxisbeispiel: Erweitern der Tabellen zur Betriebszeit der Anwendung 333

22.2 Berechnete Spalten (Computed Columns) 335

22.2.1 Automatisches SELECT 336

22.2.2 Praxistipp: Spalten mit einer Berechnungsformel anlegen 336

22.2.3 Spalten mit einer Berechnungsformel nutzen 338

22.2.4 Spalten mit einer Berechnungsformel beim Reverse Engineering 339

22.3 Standardwerte (Default Values) 339

22.3.1 Standardwerte beim Forward Engineering festlegen 340

22.3.2 Standardwerte verwenden 340

22.3.3 Praxistipp: Standardwerte schon beim Anlegen des Objekts vergeben 342

22.3.4 Standardwerte beim Reverse Engineering 343

22.4 Tabellenaufteilung (Table Splitting) mit Owned Types 343

22.4.1 Owned Types 344

22.4.2 Weitere Möglichkeiten mit Owned Types 351

22.4.3 Daten schreiben und lesen mit Owned Types 353

22.4.4 Einschränkungen bei Owned Types 354

22.5 Sequenzobjekte (Sequences) 355

22.5.1 Was sind Sequenzen? 355

22.5.2 Erstellen von Sequenzen mit T-SQL 356

22.5.3 Erstellen von Sequenzen beim Forward Engineering 358

22.5.4 Sequenzen im Einsatz 359

22.6 Alternative Schlüssel 362

22.6.1 Alternative Schlüssel definieren 363

22.6.2 Alternative Schlüssel im Einsatz 365

22.7 Kaskadierendes Löschen (Cascading Delete) 368

22.7.1 Löschoptionen in Entity Framework Core 369

22.7.2 Beispiel 371

22.8 Abbildung von Datenbanksichten (Views) 376

22.8.1 Datenbanksicht anlegen 376

22.8.2 Entitätsklasse für die Datenbanksicht anlegen 377

22.8.3 Einbinden der Entitätsklasse in die Kontextklasse 377

22.8.4 Verwendung der Datenbanksicht 378

22.8.5 Datenbanksichten mit Entity Framework Core 2.1 und 2.2 378

22.8.6 Datenbanksichten mit Entity Framework Core 1.x und 2.0 379

22.9 Sichten auf Kontextebene (Defining Queries) 382

22.9.1 Entitätsklassen für Defining Queries 382

22.9.2 Registrierung der Entitätsklassen in der Kontextklasse 383

22.9.3 Abfragedefinition 383

22.9.4 Verwendung der Defining Queries 384

22.10 Wertkonvertierungen (Value Converter) 385

22.10.1 Einschränkungen 386

22.10.2 Beispiel 1: Konvertierung zwischen String und Boolean 386

22.10.3 Beispiel 2: Konvertierung zwischen Aufzählungstyp und String 390

22.11 Datenbefüllung bei der Schemamigration (Data Seeding) 393

22.11.1 Herausforderung Shadow Properties 396

22.11.2 Bug bei berechneten Spalten 398

23 Weitere Tipps und Tricks zu LINQ und SQL 400

23.1 Globale Abfragefilter (ab Version 2.0) 400

23.1.1 Filter definieren 400

23.1.2 Filter nutzen 400

23.1.3 Praxistipp: Filter ignorieren 401

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

23.1.5 Globale Abfragefilter bei Stored Procedures und Table Valued Functions 402

23.2 Zukünftige Abfragen (Future Queries) 402

23.2.1 Konzept der Future Queries 402

23.2.2 Future() 403

23.2.3 FutureValue() 404

23.2.4 Bug in Verbindung mit EF Profiler 405

23.3 Befehlsverfolgung mit Query Tags (ab Version 2.2) 406

23.3.1 TagWith() 406

23.3.2 Einsatz von TagWith() 406

23.3.3 Einschränkungen 413

23.4 Benachrichtigungen bei Datenänderungen (Query Notifications) 413

23.4.1 SqlDependency für Microsoft SQL Server 413

23.4.2 Aufbau des SQL-Befehls 414

23.4.3 Query Notification in einer Konsolenanwendungen 415

23.4.4 Diagnosemöglichkeiten 417

23.4.5 Query Notification in einer Desktop-Anwendungen 417

24 Leistungsoptimierung (Performance Tuning) 424

24.1 Vorgehensmodell zur Leistungsoptimierung bei Entity Framework Core 424

24.2 Best Practices für Ihre eigenen Leistungstests 424

24.3 Leistungsvergleich verschiedener Datenzugriffstechniken in .NET 425

24.4 Objektzuweisung optimieren 426

24.5 Massenoperationen 429

24.5.1 Einzellöschen 429

24.5.2 Optimierung durch Batching 429

24.5.3 Löschen ohne Laden mit Pseudo-Objekten 431

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

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

24.5.6 Massenaktualisierung mit EFPlus 436

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

24.6 Leistungsoptimierung durch No-Tracking 437

24.6.1 No-Tracking aktivieren 437

24.6.2 No-Tracking fast immer möglich 438

24.6.3 No-Tracking im änderbaren Datagrid 441

24.6.4 QueryTrackingBehavior und AsTracking() 452

24.6.5 Konsequenzen des No-Tracking-Modus 453

24.6.6 Best Practices 453

24.7 Leistungsoptimierung durch Compiled Queries 454

24.7.1 Konzept einer Compiled Query 454

24.7.2 Compiled Queries in Entity Framework Core 455

24.7.3 Leistungstest 455

24.7.4 Einschränkungen 459

24.8 Auswahl der besten Ladestrategie 460

24.9 Zwischenspeicherung (Caching) 460

24.9.1 MemoryCache 461

24.9.2 CacheManager 463

24.10 Second-Level-Caching mit EFPlus 470

24.10.1 Einrichten des Second-Level-Cache 471

24.10.2 Verwenden des Second-Level-Cache 471

25 Softwarearchitektur mit Entity Framework Core 474

25.1 Monolithisches Modell 474

25.2 Entity Framework Core als Datenzugriffsschicht 475

25.3 Reine Geschäftslogik 476

25.4 Geschäftsobjekt- und ViewModel-Klassen 477

25.5 Verteilte Systeme 478

25.6 Fazit 481

26 Zusatzwerkzeuge 482

26.1 Entity Framework Core Power Tools 482

26.1.1 Funktionsüberblick 482

26.1.2 Reverse Engineering mit Entity Framework Core Power Tools 483

26.1.3 Schemamigrationen mit Entity Framework Core Power Tools 488

26.1.4 Diagramme mit Entity Framework Core Power Tools 490

26.2 LINQPad 491

26.2.1 Aufbau von LINQPad 492

26.2.2 Datenquellen einbinden 492

26.2.3 LINQ-Befehle ausführen 496

26.2.4 Abspeichern 498

26.2.5 Weitere LINQPad-Treiber 498

26.2.6 Interaktive Programmcodeeingabe 499

26.2.7 Fazit zu LINQPad 500

26.3 Entity Developer 500

26.3.1 Auswahl der ORM-Technik 501

26.3.2 Reverse Engineering mit Entity Developer 503

26.3.3 Forward Engineering mit Entity Developer 512

26.4 Entity Framework Profiler 517

26.4.1 Einbinden des Entity Framework Profilers 519

26.4.2 Befehle überwachen mit Entity Framework Profiler 519

26.4.3 Warnungen vor potenziellen Problemen 522

26.4.4 Analysefunktionen 523

26.4.5 Kommandozeilenunterstützung und API 524

26.4.6 Fazit zu Entity Framework Profiler 524

27 Zusatzkomponenten 525

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

27.1.1 Unterstützte Oracle-Versionen 525

27.1.2 Installation 525

27.1.3 Visual Studio-Integration 527

27.1.4 Datenbanktreibername 530

27.1.5 Entity Framework Core-Werkzeuge 530

27.1.6 Kontextklasse 531

27.1.7 Entitätsklassen 531

27.1.8 Datentypen 531

27.2 Entity Framework Plus (EFPlus) 533

27.3 Second-Level-Caching mit EFSecondLevelCache.Core 534

27.4 Objekt-Objekt-Mapping mit AutoMapper 534

27.4.1 Objekt-Objekt-Mapping per Reflection 536

27.4.2 AutoMapper 538

27.4.3 Beispielszenario 539

27.4.4 Abbildungen konfigurieren 541

27.4.5 Abbildung ausführen mit Map() 541

27.4.6 Nicht-statisches API 542

27.4.7 Abbildungskonventionen 542

27.4.8 Abbildungskonventionen ändern 544

27.4.9 Profilklassen 544

27.4.10 Verbundene Objekte 545

27.4.11 Manuelle Abbildungen 545

27.4.12 Typkonvertierungen 548

27.4.13 Objektmengen 549

27.4.14 Vererbung 550

27.4.15 Generische Klassen 553

27.4.16 Zusatzaktionen vor und nach dem Mapping 555

27.4.17 Geschwindigkeit 557

27.4.18 Fazit zu AutoMapper 558

27.5 Andere Erweiterungen 558

28 Praxislösungen 560

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

28.1.1 Das Fallbeispiel "MiracleList" 560

28.1.2 Architektur 564

28.1.3 Entitätsklassen 568

28.1.4 Entity Framework Core-Kontextklasse 570

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

28.1.6 Geschäftslogik 574

28.1.7 WebAPI 583

28.1.8 Verwendung von Entity Framework Core per Dependency Injection 593

28.1.9 Praxistipp: Kontextinstanzpooling (DbContext Pooling) 596

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

28.2.1 Unit Tests und Integrationstests mit Entity Framework Core 597

28.2.2 In-Memory-Treiber 597

28.2.3 SQLite- In-Memory-Treiber 600

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

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

28.3 Entity Framework Core in einer Universal Windows Platform App 607

28.3.1 Das Fallbeispiel "MiracleList Light" 607

28.3.2 Architektur 608

28.3.3 Entitätsklassen 609

28.3.4 Entity Framework Core-Kontextklasse 611

28.3.5 Startcode 611

28.3.6 Erzeugte Datenbank 612

28.3.7 Datenzugriffscode 614

28.3.8 Benutzeroberfläche 618

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

28.4.1 Das Fallbeispiel "MiracleList Light" 619

28.4.2 Architektur 621

28.4.3 Entitätsklassen 623

28.4.4 Entity Framework Core-Kontextklasse 624

28.4.5 Startcode 625

28.4.6 Erzeugte Datenbank 626

28.4.7 Datenzugriffscode 626

28.4.8 Benutzeroberfläche 629

28.5 N:M-Beziehungen zu sich selbst 631

29 Quellen im Internet 638

30 Stichwortverzeichnis (Index) 639

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.

80% Royalties. Verdiene $16 an einem Buch für $20.

Wir zahlen 80% Tantiemen. Das ist kein Schreibfehler: Sie verdienen $16 bei einem Verkauf von $20. Wenn wir 5000 nicht zurückerstattete Exemplare Ihres Buchs oder Kurses für $20 verkaufen, verdienen Sie $80.000.

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

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

Mehr über das Schreiben auf Leanpub erfahren

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