Moderne Datenzugriffslösungen mit Entity Framework Core 2.1/2.2
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

Zuletzt aktualisiert: 2018-10-30

Ü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.

Ü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)
  • 65 Fachbücher bei Microsoft Press, Addison-Wesley, O’Reilly und dem Carl Hanser-Verlag und mehr als 900 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)
  • Microsoft Certified Solution Developer (MCSD)
  • Thematische Schwerpunkte:
  • Microsoft .NET Framework, Visual Studio, C#, Visual Basic
  • .NET-Architektur / Auswahl von .NET-Technologien
  • Einführung von .NET Framework und Visual Studio / Migration auf .NET
  • Webanwendungsentwicklung mit IIS, ASP.NET und AJAX
  • Enterprise .NET, verteilte Systeme/Webservices mit .NET
  • Relationale Datenbanken, XML, Datenzugriffsstrategien
  • Objektrelationales Mapping (ORM), insbesondere ADO.NET Entity Framework
  • Windows PowerShell (WPS) und Windows Management Instrumentation (WMI)
  • Ehrenamtliche Community-Tätigkeiten:
  • 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

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

  • Deutsch

  • PDF

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

Nur das E-Book ohne Programmcodebeispiele

  • Deutsch

  • PDF

$35.00
Minimal-Preis
$44.00
Empfohlener Preis

Bundles that include this book

Moderne Datenzugriffslösungen mit Entity Framework 6
Moderne Datenzugriffslösungen mit Entity Framework Core 2.1/2.2
2 Books
$74.00
Suggested Price
$50.00
Paket Preis

Table of Contents


1 Inhaltsverzeichnis 4

2 Vorwort 17

3 Über den Autor 18

4 Über dieses Buch 19

4.1 Versionsgeschichte dieses Buchs 19

4.2 Bezugsquelle für Aktualisierungen 25

4.3 Geplante Kapitel 25

4.4 Programmiersprache in diesem Buch 26

5 Fallbeispiele in diesem Buch 27

5.1 Entitäten 27

5.2 Englische Version des Beispiels 31

5.3 Anwendungsarten in diesem Buch 31

5.4 Hilfsroutinen zur Konsolenausgabe 32

6 Programmcodebeispiel zum Download 38

7 Was ist Entity Framework Core? 39

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

7.2 ORM in der .NET-Welt 40

7.3 Versionsgeschichte von Entity Framework Core 41

7.4 Unterstützte Betriebssysteme 43

7.5 Unterstützte .NET-Versionen 43

7.6 Unterstützte Visual Studio-Versionen 44

7.7 Unterstützte Datenbanken 44

7.8 Funktionsumfang von Entity Framework Core 46

7.9 Funktionen, die dauerhaft entfallen 46

7.10 Funktionen, die Microsoft bald nachrüsten will 47

7.11 Hohe Priorität, aber nicht kritisch 48

7.12 Neue Funktionen in Entity Framework Core 49

7.13 Einsatzszenarien für Entity Framework Core 49

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

8 Installation von Entity Framework Core 52

8.1 Nuget-Pakete 52

8.2 Paketinstallation 54

8.3 Aktualisierung auf eine neue Version 58

9 Konzepte von Entity Framework Core 63

9.1 Vorgehensmodelle bei Entity Framework Core 63

9.2 Artefakte bei Entity Framework Core 66

10 Reverse Engineering bestehender Datenbanken 68

10.1 Reverse Engineering-Werkzeuge 68

10.2 Vorbereiten des Reverse Engineering mit PowerShell-Befehlen 68

10.3 Codegenerierung 70

10.4 Generierter Programmcode 73

10.5 Beispiel-Client 78

10.6 .NET Core-Tool 79

10.7 Schwächen des Reverse Engineering 81

11 Forward Engineering für neue Datenbanken 82

11.1 Zwei Klassentypen beim Forward Engineering 82

11.2 Beispiele in diesem Kapitel 82

11.3 Regeln für die selbsterstellten Entitätsklassen 83

11.3.1 Nuget-Pakete 83

11.3.2 Properties 84

11.3.3 Datentypen 84

11.3.4 Beziehungen (Master-Detail) 84

11.3.5 Vererbung 85

11.3.6 Primärschlüssel 85

11.3.7 Beispiele 85

11.4 Regeln für die selbsterstellte Kontextklasse 88

11.4.1 Nuget-Pakete 88

11.4.2 Basisklasse 89

11.4.3 Konstruktor 89

11.4.4 Verweise zu den Entitätsklassen 89

11.4.5 Provider und Verbindungszeichenfolge 90

11.4.6 Beispiel für eine selbsterstellte Kontextklasse 91

11.4.7 Verwendung von DbContextOptions 91

11.4.8 Eigenes Datenbankverbindungsamanagement 93

11.4.9 Flexible Konfiguration der Kontextklasse 93

11.4.10 Thread-Sicherheit 93

11.5 Regeln für die Datenbankschemagenerierung 93

11.6 Beispiel-Client 94

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

11.8 Das erzeugte Datenmodell 97

12 Anpassung des Datenbankschemas 100

12.1 Beispiele in diesem Kapitel 100

12.2 Konvention versus Konfiguration 100

12.3 Persistente versus transiente Klassen 101

12.4 Namen im Datenbankschema 102

12.5 Reihenfolge der Spalten in einer Tabelle 103

12.6 Spaltentypen/Datentypen 103

12.7 Typkonvertierungen 105

12.8 Pflichtfelder und optionale Felder 105

12.9 Feldlängen 105

12.10 Primärschlüssel 105

12.11 Beziehungen und Fremdschlüssel 106

12.12 Optionale Beziehungen und Pflichtbeziehungen 107

12.13 Uni- und Bidirektionale Beziehungen 109

12.14 1:1-Beziehungen 110

12.15 Indexe festlegen 111

12.16 Syntaxoptionen für das Fluent-API 112

12.16.1 Sequentielle Konfiguration 112

12.16.2 Strukturierung durch Statement Lambdas 113

12.16.3 Strukturierung durch Unterroutinen 114

12.16.4 Strukturierung durch Konfigurationsklassen 114

12.17 Massenkonfiguration mit dem Fluent-API 115

13 Datenbankschemamigrationen 117

13.1 Anlegen der Datenbank zur Laufzeit 117

13.2 Schemamigrationen zur Entwicklungszeit 118

13.3 Befehle für die Schemamigrationen 118

13.4 ef.exe 119

13.5 Add-Migration 120

13.6 Update-Database 124

13.7 Schemamigrationen bei der Installation 125

13.8 Script-Migration 126

13.9 Schemamigrationen zur Laufzeit 126

13.9.1 Verwendung von Migrate() 126

13.9.2 IMigrator-Service 127

13.9.3 Informationen zum Migrationsstand 127

13.9.4 Praxiseinsatz: Ein Kommandozeilenwerkzeug für die Schemamigration 128

13.10 Migrationsszenarien 132

13.11 Weitere Möglichkeiten 134

13.12 Probleme bei der Schemamigration in Verbindung mit TFS 135

13.13 Startverhalten von Entity Framework Core 135

14 Daten lesen mit LINQ 136

14.1 Kontextklasse 136

14.2 LINQ-Abfragen 136

14.3 Schrittweises Zusammensetzung von LINQ-Abfragen 139

14.4 Einsatz von var 140

14.5 Repository-Pattern 140

14.6 LINQ-Abfragen mit Paging 144

14.7 Projektionen 145

14.7.1 Projektion auf einen Entitätstypen 145

14.7.2 Projektionen auf einen anonymen Typen 146

14.7.3 Projektionen auf einen beliebigen Typen 148

14.8 Abfrage nach Einzelobjekten 149

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

14.10 Gruppierungen 151

14.11 Umgehung für das GroupBy-Problem 153

14.11.1 Mapping auf Nicht-Entitätstypen 153

14.11.2 Entitätsklasse für die Datenbanksicht anlegen 154

14.11.3 Einbinden der Entitätsklasse in die Kontextklasse 154

14.11.4 Verwendung der Pseudo-Entitätsklasse 155

14.11.5 Herausforderung: Migrationen 156

14.11.6 Gruppierungen mit Datenbanksichten 157

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

14.13 Falsche Befehlsreihenfolge 159

14.14 Eigene Funktionen in LINQ 160

14.15 Kurzübersicht über die LINQ-Syntax 161

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

14.15.2 Bedingungen (where) 162

14.15.3 Bedingungen mit Mengen (in) 163

14.15.4 Sortierungen (orderby) 163

14.15.5 Paging (Skip() und Take()) 163

14.15.6 Projektion 164

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

14.15.8 Gruppierungen (GroupBy) 165

14.15.9 Einzelobjekte (SingleOrDefault(), FirstOrDefault()) 165

14.15.10 Verbundene Objekte (Include()) 166

14.15.11 Inner Join (Join) 167

14.15.12 Cross Join (Kartesisches Produkt) 167

14.15.13 Join mit Gruppierung 168

14.15.14 Unter-Abfragen (Sub-Select) 168

15 Objektbeziehungen und Ladestrategien 170

15.1 Überblick über die Ladestrategien 170

15.2 Standardverhalten 170

15.3 Lazy Loading 172

15.3.1 Aktivierung des Lazy Loading 172

15.3.2 Gefahren von Lazy Loading 174

15.3.3 Lazy Loading ohne Proxyklassen 175

15.4 Explizites Nachladen (Explicit Loading) 178

15.5 Eager Loading 180

15.6 Relationship Fixup 183

15.6.1 Beispiel für Fall 1 184

15.6.2 Beispiel für Fall 2 185

15.6.3 Beispiel für Fall 3 186

15.7 Preloading mit Relationship Fixup 187

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

16.1 Speichern mit SaveChanges() 192

16.2 Änderungsverfolgung auch für Unterobjekte 194

16.3 Zusammenfassen von Befehlen (Batching) 195

16.4 Das Foreach-Problem 196

16.5 Objekte hinzufügen mit Add() 197

16.6 Verbundene Objekte anlegen 199

16.7 Verbundene Objekte ändern / Relationship Fixup 202

16.8 Widersprüchliche Beziehungen 204

16.8.1 Objekte löschen mit Remove() 209

16.8.2 Löschen mit einem Attrappen-Objekt 211

16.8.3 Massenlöschen 212

16.9 Datenbanktransaktionen 213

16.9.1 Transaktion in einer Kontextinstanz 213

16.9.2 Transaktion über mehrere Kontextinstanzen ohne TransactionScope 214

16.9.3 Transaktion über mehrere Kontextinstanzen mit TransactionScope 216

16.10 Change Tracker abfragen 218

16.10.1 Zustand eines Objekts 218

16.10.2 Liste aller geänderten Objekte 220

17 Datenänderungskonflikte (Concurrency) 223

17.1 Rückblick 223

17.2 Im Standard keine Konflikterkennung 224

17.3 Optimistisches Sperren / Konflikterkennung 225

17.4 Konflikterkennung für alle Eigenschaften 226

17.5 Konflikteinstellung per Konvention 227

17.6 Fallweise Konflikteinstellung 228

17.7 Zeitstempel (Timestamp) 228

17.8 Konflikte auflösen 230

17.9 Pessimistisches Sperren bei Entity Framework Core 234

18 Protokollierung (Logging) 238

18.1 Verwendung der Erweiterungsmethode Log() 238

18.2 Implementierung der Log()-Erweiterungsmethode 240

18.3 Protokollierungskategorien 244

19 Asynchrone Programmierung 245

19.1 Asynchrone Erweiterungsmethoden 245

19.2 ToListAsync() 245

19.3 SaveChangesAsync() 246

19.4 ForeachAsync() 247

20 Dynamische LINQ-Abfragen 249

20.1 Schrittweises zusammensetzen von LINQ-Abfragen 249

20.2 Expression Trees 250

20.3 Dynamic LINQ 253

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

21.1 Abfragen mit FromSql() 256

21.2 Zusammensetzbarkeit von LINQ und SQL 258

21.3 Stored Procedures und Table Valued Functions 259

21.4 Nicht-Entitätsklassen als Ergebnismenge 261

21.5 Erweiterungsmethode ExecuteSqlQuery() 262

21.6 SQL-DML-Befehle ohne Resultset 263

22 Weitere Tipps und Tricks zum Mapping 264

22.1 Shadow Properties 264

22.1.1 Automatische Shadow Properties 264

22.1.2 Festlegung eines Shadow Property 265

22.1.3 Ausgabe aller Shadow Properties einer Entitätsklasse 265

22.1.4 Lesen und Ändern eines Shadow Property 265

22.1.5 LINQ-Abfragen mit Shadow Properties 267

22.1.6 Praxisbeispiel: Automatisches Setzen bei jedem Speichern 267

22.1.7 Praxisbeispiel: Erweitern der Tabellen zur Betriebszeit der Anwendung 268

22.2 Berechnete Spalten (Computed Columns) 270

22.2.1 Automatisches SELECT 270

22.2.2 Praxistipp: Spalten mit einer Berechnungsformel anlegen 271

22.2.3 Spalten mit einer Berechnungsformel nutzen 272

22.2.4 Spalten mit einer Berechnungsformel beim Reverse Engineering 274

22.3 Standardwerte (Default Values) 274

22.3.1 Standardwerte beim Forward Engineering festlegen 275

22.3.2 Standardwerte verwenden 275

22.3.3 Praxistipp: Standardwerte schon beim Anlegen des Objekts vergeben 277

22.3.4 Standardwerte beim Reverse Engineering 278

22.4 Tabellenaufteilung (Table Splitting) mit Owned Types 278

22.4.1 Owned Types 279

22.4.2 Weitere Möglichkeiten mit Owned Types 285

22.4.3 Daten schreiben und lesen mit Owned Types 287

22.4.4 Einschränkungen bei Owned Types 288

22.5 Sequenzobjekte (Sequences) 289

22.5.1 Was sind Sequenzen? 289

22.5.2 Erstellen von Sequenzen mit T-SQL 290

22.5.3 Erstellen von Sequenzen beim Forward Engineering 292

22.5.4 Sequenzen im Einsatz 293

22.6 Alternative Schlüssel 296

22.6.1 Alternative Schlüssel definieren 297

22.6.2 Alternative Schlüssel im Einsatz 299

22.7 Kaskadierendes Löschen (Cascading Delete) 302

22.7.1 Löschoptionen in Entity Framework Core 302

22.7.2 Beispiel 304

22.8 Abbildung von Datenbanksichten (Views) 309

22.8.1 Datenbanksicht anlegen 309

22.8.2 Entitätsklasse für die Datenbanksicht anlegen 309

22.8.3 Einbinden der Entitätsklasse in die Kontextklasse 310

22.8.4 Verwendung der Datenbanksicht 311

22.8.5 Herausforderung: Migrationen 312

22.9 Wertkonvertierungen (Value Converter) 314

22.9.1 Einschränkungen 315

22.9.2 Beispiel 1: Konvertierung zwischen String und Boolean 315

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

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

22.10.1 Herausforderung Shadow Properties 325

22.10.2 Bug bei berechneten Spalten 327

23 Weitere Tipps und Tricks zu LINQ und SQL 329

23.1 Globale Abfragefilter (ab Version 2.0) 329

23.1.1 Filter definieren 329

23.1.2 Filter nutzen 329

23.1.3 Praxistipp: Filter ignorieren 330

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

23.1.5 Globale Abfragefilter bei Stored Procedures und Table Valued Functions 331

23.2 Zukünftige Abfragen (Future Queries) 331

23.2.1 Konzept der Future Queries 331

23.2.2 Future() 332

23.2.3 FutureValue() 333

23.2.4 Bug in Verbindung mit EF Profiler 334

23.3 Query Tags (ab Version 2.2) 335

23.3.1 Einsatz von WithTag() 335

23.3.2 Einschränkungen 337

24 Leistungsoptimierung (Performance Tuning) 339

24.1 Vorgehensmodell zur Leistungsoptimierung bei Entity Framework Core 339

24.2 Best Practices für Ihre eigenen Leistungstests 339

24.3 Leistungsvergleich verschiedener Datenzugriffstechniken in .NET 340

24.4 Objektzuweisung optimieren 341

24.5 Massenoperationen 344

24.5.1 Einzellöschen 344

24.5.2 Optimierung durch Batching 344

24.5.3 Löschen ohne Laden mit Pseudo-Objekten 346

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

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

24.5.6 Massenaktualisierung mit EFPlus 351

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

24.6 Leistungsoptimierung durch No-Tracking 352

24.6.1 No-Tracking aktivieren 352

24.6.2 No-Tracking fast immer möglich 353

24.6.3 No-Tracking im änderbaren Datagrid 356

24.6.4 QueryTrackingBehavior und AsTracking() 364

24.6.5 Konsequenzen des No-Tracking-Modus 366

24.6.6 Best Practices 366

24.7 Auswahl der besten Ladestrategie 367

24.8 Zwischenspeicherung (Caching) 367

24.8.1 MemoryCache 368

24.8.2 CacheManager 370

24.9 Second-Level-Caching mit EFPlus 377

24.9.1 Einrichten des Second-Level-Cache 378

24.9.2 Verwenden des Second-Level-Cache 378

25 Softwarearchitektur mit Entity Framework Core 381

25.1 Monolithisches Modell 381

25.2 Entity Framework Core als Datenzugriffsschicht 382

25.3 Reine Geschäftslogik 383

25.4 Geschäftsobjekt- und ViewModel-Klassen 384

25.5 Verteilte Systeme 385

25.6 Fazit 388

26 Zusatzwerkzeuge 389

26.1 Entity Framework Core Power Tools 389

26.1.1 Funktionsüberblick 389

26.1.2 Reverse Engineering mit Entity Framework Core Power Tools 390

26.1.3 Schemamigrationen mit Entity Framework Core Power Tools 395

26.1.4 Diagramme mit Entity Framework Core Power Tools 397

26.2 LINQPad 398

26.2.1 Aufbau von LINQPad 399

26.2.2 Datenquellen einbinden 399

26.2.3 LINQ-Befehle ausführen 403

26.2.4 Abspeichern 405

26.2.5 Weitere LINQPad-Treiber 405

26.2.6 Interaktive Programmcodeeingabe 406

26.2.7 Fazit zu LINQPad 407

26.3 Entity Developer 407

26.3.1 Auswahl der ORM-Technik 408

26.3.2 Reverse Engineering mit Entity Developer 410

26.3.3 Forward Engineering mit Entity Developer 419

26.4 Entity Framework Profiler 424

26.4.1 Einbinden des Entity Framework Profilers 426

26.4.2 Befehle überwachen mit Entity Framework Profiler 426

26.4.3 Warnungen vor potenziellen Problemen 429

26.4.4 Analysefunktionen 430

26.4.5 Kommandozeilenunterstützung und API 431

26.4.6 Fazit zu Entity Framework Profiler 431

27 Zusatzkomponenten 432

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

27.1.1 Unterstützte Oracle-Versionen 432

27.1.2 Installation 432

27.1.3 Visual Studio-Integration 434

27.1.4 Entity Framework Core-Werkzeuge 437

27.1.5 Kontextklasse 437

27.1.6 Entitätsklassen 438

27.1.7 Datentypen 438

27.2 Entity Framework Plus (EFPlus) 440

27.2.1 Herausforderung Shadow Properties 443

27.2.2 Bug bei berechneten Spalten 445

27.3 Second-Level-Caching mit EFSecondLevelCache.Core 447

27.4 Objekt-Objekt-Mapping mit AutoMapper 447

27.4.1 Objekt-Objekt-Mapping per Reflection 449

27.4.2 AutoMapper 452

27.4.3 Beispielszenario 452

27.4.4 Abbildungen konfigurieren 454

27.4.5 Abbildung ausführen mit Map() 454

27.4.6 Nicht-statisches API 455

27.4.7 Abbildungskonventionen 455

27.4.8 Abbildungskonventionen ändern 457

27.4.9 Profilklassen 457

27.4.10 Verbundene Objekte 458

27.4.11 Manuelle Abbildungen 458

27.4.12 Typkonvertierungen 461

27.4.13 Objektmengen 462

27.4.14 Vererbung 463

27.4.15 Generische Klassen 466

27.4.16 Zusatzaktionen vor und nach dem Mapping 468

27.4.17 Geschwindigkeit 470

27.4.18 Fazit zu AutoMapper 471

27.5 Weitere Erweiterungen 471

28 Praxislösungen 473

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

28.1.1 Das Fallbeispiel "MiracleList" 473

28.1.2 Architektur 477

28.1.3 Entitätsklassen 481

28.1.4 Entity Framework Core-Kontextklasse 483

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

28.1.6 Geschäftslogik 487

28.1.7 WebAPI 496

28.1.8 Verwendung von Entity Framework Core per Dependency Injection 506

28.1.9 Praxistipp: Kontextinstanzpooling (DbContext Pooling) 509

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

28.2.1 Unit Tests und Integrationstests mit Entity Framework Core 510

28.2.2 In-Memory-Treiber 510

28.2.3 SQLite- In-Memory-Treiber 513

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

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

28.3 Entity Framework Core in einer Universal Windows Platform App 520

28.3.1 Das Fallbeispiel "MiracleList Light" 520

28.3.2 Architektur 521

28.3.3 Entitätsklassen 522

28.3.4 Entity Framework Core-Kontextklasse 524

28.3.5 Startcode 524

28.3.6 Erzeugte Datenbank 525

28.3.7 Datenzugriffscode 527

28.3.8 Benutzeroberfläche 531

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

28.4.1 Das Fallbeispiel "MiracleList Light" 532

28.4.2 Architektur 534

28.4.3 Entitätsklassen 536

28.4.4 Entity Framework Core-Kontextklasse 537

28.4.5 Startcode 538

28.4.6 Erzeugte Datenbank 539

28.4.7 Datenzugriffscode 539

28.4.8 Benutzeroberfläche 542

28.5 N:M-Beziehungen zu sich selbst 544

29 Quellen im Internet 551

30 Stichwortverzeichnis (Index) 552


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.

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