Moderne Datenzugriffslösungen mit Entity Framework Core 2.0/2.1
Moderne Datenzugriffslösungen mit Entity Framework Core 2.0/2.1 (E-Book (PDF) und Programmcodebeispiele)
$39.00
Minimal
$44.00
Empfohlen
Moderne Datenzugriffslösungen mit Entity Framework Core 2.0/2.1

Zuletzt aktualisiert: 2018-08-21

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

Table of Contents


1 Inhaltsverzeichnis 4

2 Vorwort 17

3 Über den Autor 18

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 74

10.5 Beispiel-Client 79

10.6 .NET Core-Tool 80

10.7 Schwächen des Reverse Engineering 82

11 Forward Engineering für neue Datenbanken 83

11.1 Zwei Klassentypen beim Forward Engineering 83

11.2 Beispiele in diesem Kapitel 83

11.3 Regeln für die selbsterstellten Entitätsklassen 84

11.3.1 Nuget-Pakete 84

11.3.2 Properties 85

11.3.3 Datentypen 85

11.3.4 Beziehungen (Master-Detail) 85

11.3.5 Vererbung 86

11.3.6 Primärschlüssel 86

11.3.7 Beispiele 86

11.4 Regeln für die selbsterstellte Kontextklasse 89

11.4.1 Nuget-Pakete 89

11.4.2 Basisklasse 90

11.4.3 Konstruktor 90

11.4.4 Verweise zu den Entitätsklassen 90

11.4.5 Provider und Verbindungszeichenfolge 91

11.4.6 Beispiel 91

11.4.7 Eigene Verbindungen 92

11.4.8 Thread-Sicherheit 92

11.5 Regeln für die Datenbankschemagenerierung 92

11.6 Beispiel-Client 93

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

11.8 Das erzeugte Datenmodell 96

12 Anpassung des Datenbankschemas 99

12.1 Beispiele in diesem Kapitel 99

12.2 Konvention versus Konfiguration 99

12.3 Persistente versus transiente Klassen 100

12.4 Namen im Datenbankschema 101

12.5 Reihenfolge der Spalten in einer Tabelle 102

12.6 Spaltentypen/Datentypen 102

12.7 Typkonvertierungen 104

12.8 Pflichtfelder und optionale Felder 104

12.9 Feldlängen 104

12.10 Primärschlüssel 104

12.11 Beziehungen und Fremdschlüssel 105

12.12 Optionale Beziehungen und Pflichtbeziehungen 106

12.13 Uni- und Bidirektionale Beziehungen 108

12.14 1:1-Beziehungen 109

12.15 Indexe festlegen 110

12.16 Syntaxoptionen für das Fluent-API 111

12.16.1 Sequentielle Konfiguration 111

12.16.2 Strukturierung durch Statement Lambdas 112

12.16.3 Strukturierung durch Unterroutinen 113

12.16.4 Strukturierung durch Konfigurationsklassen 113

12.17 Massenkonfiguration mit dem Fluent-API 114

13 Datenbankschemamigrationen 116

13.1 Anlegen der Datenbank zur Laufzeit 116

13.2 Schemamigrationen zur Entwicklungszeit 117

13.3 Befehle für die Schemamigrationen 117

13.4 ef.exe 118

13.5 Add-Migration 119

13.6 Update-Database 123

13.7 Schemamigrationen bei der Installation 124

13.8 Script-Migration 125

13.9 Schemamigrationen zur Laufzeit 125

13.9.1 Verwendung von Migrate() 125

13.9.2 IMigrator-Service 126

13.9.3 Informationen zum Migrationsstand 126

13.9.4 Praxiseinsatz: Ein Kommandozeilenwerkzeug für die Schemamigration 127

13.10 Migrationsszenarien 131

13.11 Weitere Möglichkeiten 133

13.12 Probleme bei der Schemamigration in Verbindung mit TFS 134

13.13 Startverhalten von Entity Framework Core 134

14 Daten lesen mit LINQ 135

14.1 Kontextklasse 135

14.2 LINQ-Abfragen 135

14.3 Schrittweises Zusammensetzung von LINQ-Abfragen 138

14.4 Einsatz von var 139

14.5 Repository-Pattern 139

14.6 LINQ-Abfragen mit Paging 143

14.7 Projektionen 144

14.7.1 Projektion auf einen Entitätstypen 144

14.7.2 Projektionen auf einen anonymen Typen 145

14.7.3 Projektionen auf einen beliebigen Typen 147

14.8 Abfrage nach Einzelobjekten 148

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

14.10 Gruppierungen 150

14.11 Umgehung für das GroupBy-Problem 152

14.11.1 Mapping auf Nicht-Entitätstypen 152

14.11.2 Entitätsklasse für die Datenbanksicht anlegen 153

14.11.3 Einbinden der Entitätsklasse in die Kontextklasse 153

14.11.4 Verwendung der Pseudo-Entitätsklasse 154

14.11.5 Herausforderung: Migrationen 155

14.11.6 Gruppierungen mit Datenbanksichten 156

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

14.13 Falsche Befehlsreihenfolge 158

14.14 Eigene Funktionen in LINQ 159

14.15 Kurzübersicht über die LINQ-Syntax 160

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

14.15.2 Bedingungen (where) 161

14.15.3 Bedingungen mit Mengen (in) 162

14.15.4 Sortierungen (orderby) 162

14.15.5 Paging (Skip() und Take()) 162

14.15.6 Projektion 163

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

14.15.8 Gruppierungen (GroupBy) 164

14.15.9 Einzelobjekte (SingleOrDefault(), FirstOrDefault()) 164

14.15.10 Verbundene Objekte (Include()) 165

14.15.11 Inner Join (Join) 166

14.15.12 Cross Join (Kartesisches Produkt) 166

14.15.13 Join mit Gruppierung 167

14.15.14 Unter-Abfragen (Sub-Select) 167

15 Objektbeziehungen und Ladestrategien 169

15.1 Überblick über die Ladestrategien 169

15.2 Standardverhalten 169

15.3 Lazy Loading 171

15.3.1 Aktivierung des Lazy Loading 171

15.3.2 Gefahren von Lazy Loading 173

15.3.3 Lazy Loading ohne Proxyklassen 174

15.4 Explizites Nachladen (Explicit Loading) 177

15.5 Eager Loading 179

15.6 Relationship Fixup 182

15.6.1 Beispiel für Fall 1 183

15.6.2 Beispiel für Fall 2 184

15.6.3 Beispiel für Fall 3 185

15.7 Preloading mit Relationship Fixup 186

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

16.1 Speichern mit SaveChanges() 191

16.2 Änderungsverfolgung auch für Unterobjekte 193

16.3 Zusammenfassen von Befehlen (Batching) 194

16.4 Das Foreach-Problem 195

16.5 Objekte hinzufügen mit Add() 196

16.6 Verbundene Objekte anlegen 198

16.7 Verbundene Objekte ändern / Relationship Fixup 201

16.8 Widersprüchliche Beziehungen 203

16.8.1 Objekte löschen mit Remove() 208

16.8.2 Löschen mit einem Attrappen-Objekt 210

16.8.3 Massenlöschen 211

16.9 Datenbanktransaktionen 212

16.9.1 Transaktion in einer Kontextinstanz 212

16.9.2 Transaktion über mehrere Kontextinstanzen ohne TransactionScope 213

16.9.3 Transaktion über mehrere Kontextinstanzen mit TransactionScope 215

16.10 Change Tracker abfragen 217

16.10.1 Zustand eines Objekts 217

16.10.2 Liste aller geänderten Objekte 219

17 Datenänderungskonflikte (Concurrency) 222

17.1 Rückblick 222

17.2 Im Standard keine Konflikterkennung 223

17.3 Optimistisches Sperren / Konflikterkennung 224

17.4 Konflikterkennung für alle Eigenschaften 225

17.5 Konflikteinstellung per Konvention 226

17.6 Fallweise Konflikteinstellung 227

17.7 Zeitstempel (Timestamp) 227

17.8 Konflikte auflösen 229

17.9 Pessimistisches Sperren bei Entity Framework Core 233

18 Protokollierung (Logging) 237

18.1 Verwendung der Erweiterungsmethode Log() 237

18.2 Implementierung der Log()-Erweiterungsmethode 239

18.3 Protokollierungskategorien 243

19 Asynchrone Programmierung 244

19.1 Asynchrone Erweiterungsmethoden 244

19.2 ToListAsync() 244

19.3 SaveChangesAsync() 245

19.4 ForeachAsync() 246

20 Dynamische LINQ-Abfragen 248

20.1 Schrittweises zusammensetzen von LINQ-Abfragen 248

20.2 Expression Trees 249

20.3 Dynamic LINQ 252

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

21.1 Abfragen mit FromSql() 255

21.2 Zusammensetzbarkeit von LINQ und SQL 257

21.3 Stored Procedures und Table Valued Functions 258

21.4 Nicht-Entitätsklassen als Ergebnismenge 260

21.5 Erweiterungsmethode ExecuteSqlQuery() 261

21.6 SQL-DML-Befehle ohne Resultset 262

22 Weitere Tipps und Tricks zum Mapping 263

22.1 Shadow Properties 263

22.1.1 Automatische Shadow Properties 263

22.1.2 Festlegung eines Shadow Property 264

22.1.3 Ausgabe aller Shadow Properties einer Entitätsklasse 264

22.1.4 Lesen und Ändern eines Shadow Property 264

22.1.5 LINQ-Abfragen mit Shadow Properties 266

22.1.6 Praxisbeispiel: Automatisches Setzen bei jedem Speichern 266

22.1.7 Praxisbeispiel: Erweitern der Tabellen zur Betriebszeit der Anwendung 267

22.2 Berechnete Spalten (Computed Columns) 269

22.2.1 Automatisches SELECT 269

22.2.2 Praxistipp: Spalten mit einer Berechnungsformel anlegen 270

22.2.3 Spalten mit einer Berechnungsformel nutzen 271

22.2.4 Spalten mit einer Berechnungsformel beim Reverse Engineering 273

22.3 Standardwerte (Default Values) 273

22.3.1 Standardwerte beim Forward Engineering festlegen 274

22.3.2 Standardwerte verwenden 274

22.3.3 Praxistipp: Standardwerte schon beim Anlegen des Objekts vergeben 276

22.3.4 Standardwerte beim Reverse Engineering 277

22.4 Tabellenaufteilung (Table Splitting) mit Owned Types 277

22.4.1 Owned Types 278

22.4.2 Weitere Möglichkeiten mit Owned Types 284

22.4.3 Daten schreiben und lesen mit Owned Types 286

22.4.4 Einschränkungen bei Owned Types 287

22.5 Sequenzobjekte (Sequences) 288

22.5.1 Was sind Sequenzen? 288

22.5.2 Erstellen von Sequenzen mit T-SQL 289

22.5.3 Erstellen von Sequenzen beim Forward Engineering 291

22.5.4 Sequenzen im Einsatz 292

22.6 Alternative Schlüssel 295

22.6.1 Alternative Schlüssel definieren 296

22.6.2 Alternative Schlüssel im Einsatz 298

22.7 Kaskadierendes Löschen (Cascading Delete) 301

22.7.1 Löschoptionen in Entity Framework Core 301

22.7.2 Beispiel 303

22.8 Abbildung von Datenbanksichten (Views) 308

22.8.1 Datenbanksicht anlegen 308

22.8.2 Entitätsklasse für die Datenbanksicht anlegen 308

22.8.3 Einbinden der Entitätsklasse in die Kontextklasse 309

22.8.4 Verwendung der Datenbanksicht 310

22.8.5 Herausforderung: Migrationen 311

22.9 Wertkonvertierungen (Value Converter) 313

22.9.1 Einschränkungen 314

22.9.2 Beispiel 1: Konvertierung zwischen String und Boolean 314

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

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

22.10.1 Herausforderung Shadow Properties 324

22.10.2 Bug bei berechneten Spalten 326

23 Weitere Tipps und Tricks zu LINQ und SQL 328

23.1 Globale Abfragefilter (ab Version 2.0) 328

23.1.1 Filter definieren 328

23.1.2 Filter nutzen 328

23.1.3 Praxistipp: Filter ignorieren 329

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

23.1.5 Globale Abfragefilter bei Stored Procedures und Table Valued Functions 330

23.2 Zukünftige Abfragen (Future Queries) 330

23.2.1 Konzept der Future Queries 330

23.2.2 Future() 331

23.2.3 FutureValue() 332

23.2.4 Bug in Verbindung mit EF Profiler 333

24 Leistungsoptimierung (Performance Tuning) 335

24.1 Vorgehensmodell zur Leistungsoptimierung bei Entity Framework Core 335

24.2 Best Practices für Ihre eigenen Leistungstests 335

24.3 Leistungsvergleich verschiedener Datenzugriffstechniken in .NET 336

24.4 Objektzuweisung optimieren 337

24.5 Massenoperationen 340

24.5.1 Einzellöschen 340

24.5.2 Optimierung durch Batching 340

24.5.3 Löschen ohne Laden mit Pseudo-Objekten 342

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

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

24.5.6 Massenaktualisierung mit EFPlus 347

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

24.6 Leistungsoptimierung durch No-Tracking 348

24.6.1 No-Tracking aktivieren 348

24.6.2 No-Tracking fast immer möglich 349

24.6.3 No-Tracking im änderbaren Datagrid 352

24.6.4 QueryTrackingBehavior und AsTracking() 360

24.6.5 Konsequenzen des No-Tracking-Modus 362

24.6.6 Best Practices 362

24.7 Auswahl der besten Ladestrategie 363

24.8 Zwischenspeicherung (Caching) 363

24.8.1 MemoryCache 364

24.8.2 CacheManager 366

24.9 Second-Level-Caching mit EFPlus 373

24.9.1 Einrichten des Second-Level-Cache 374

24.9.2 Verwenden des Second-Level-Cache 374

25 Softwarearchitektur mit Entity Framework Core 377

25.1 Monolithisches Modell 377

25.2 Entity Framework Core als Datenzugriffsschicht 378

25.3 Reine Geschäftslogik 379

25.4 Geschäftsobjekt- und ViewModel-Klassen 380

25.5 Verteilte Systeme 381

25.6 Fazit 384

26 Zusatzwerkzeuge 385

26.1 Entity Framework Core Power Tools 385

26.1.1 Funktionsüberblick 385

26.1.2 Reverse Engineering mit Entity Framework Core Power Tools 386

26.1.3 Diagramme mit Entity Framework Core Power Tools 390

26.2 LINQPad 391

26.2.1 Aufbau von LINQPad 392

26.2.2 Datenquellen einbinden 393

26.2.3 LINQ-Befehle ausführen 396

26.2.4 Abspeichern 398

26.2.5 Weitere LINQPad-Treiber 398

26.2.6 Interaktive Programmcodeeingabe 399

26.2.7 Fazit zu LINQPad 400

26.3 Entity Developer 400

26.3.1 Auswahl der ORM-Technik 401

26.3.2 Reverse Engineering mit Entity Developer 403

26.3.3 Forward Engineering mit Entity Developer 412

26.4 Entity Framework Profiler 417

26.4.1 Einbinden des Entity Framework Profilers 419

26.4.2 Befehle überwachen mit Entity Framework Profiler 419

26.4.3 Warnungen vor potenziellen Problemen 422

26.4.4 Analysefunktionen 423

26.4.5 Kommandozeilenunterstützung und API 424

26.4.6 Fazit zu Entity Framework Profiler 424

27 Zusatzkomponenten 425

27.1 Oracle-Treiber von DevArt 425

27.1.1 Installation 425

27.1.2 Werkzeuge 425

27.1.3 Kontextklasse 426

27.1.4 Entitätsklassen 426

27.1.5 Datentypen 426

27.2 Entity Framework Plus (EFPlus) 428

27.3 Second-Level-Caching mit EFSecondLevelCache.Core 435

27.4 Objekt-Objekt-Mapping mit AutoMapper 435

27.4.1 Objekt-Objekt-Mapping per Reflection 437

27.4.2 AutoMapper 440

27.4.3 Beispielszenario 440

27.4.4 Abbildungen konfigurieren 442

27.4.5 Abbildung ausführen mit Map() 442

27.4.6 Nicht-statisches API 443

27.4.7 Abbildungskonventionen 443

27.4.8 Abbildungskonventionen ändern 445

27.4.9 Profilklassen 445

27.4.10 Verbundene Objekte 446

27.4.11 Manuelle Abbildungen 446

27.4.12 Typkonvertierungen 449

27.4.13 Objektmengen 450

27.4.14 Vererbung 451

27.4.15 Generische Klassen 454

27.4.16 Zusatzaktionen vor und nach dem Mapping 456

27.4.17 Geschwindigkeit 458

27.4.18 Fazit zu AutoMapper 459

27.5 Weitere Erweiterungen 459

28 Praxislösungen 461

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

28.1.1 Das Fallbeispiel "MiracleList" 461

28.1.2 Architektur 465

28.1.3 Entitätsklassen 469

28.1.4 Entity Framework Core-Kontextklasse 471

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

28.1.6 Geschäftslogik 473

28.1.7 WebAPI 483

28.1.8 Verwendung von Entity Framework Core per Dependency Injection 493

28.1.9 Praxistipp: Kontextinstanzpooling (DbContext Pooling) 496

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

28.2.1 Unit Tests und Integrationstests mit Entity Framework Core 497

28.2.2 In-Memory-Treiber 497

28.2.3 SQLite In-Memory-Treiber 500

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

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

28.3 Entity Framework Core in einer Universal Windows Platform App 506

28.3.1 Das Fallbeispiel "MiracleList Light" 506

28.3.2 Architektur 507

28.3.3 Entitätsklassen 508

28.3.4 Entity Framework Core-Kontextklasse 510

28.3.5 Startcode 510

28.3.6 Erzeugte Datenbank 511

28.3.7 Datenzugriffscode 513

28.3.8 Benutzeroberfläche 517

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

28.4.1 Das Fallbeispiel "MiracleList Light" 518

28.4.2 Architektur 520

28.4.3 Entitätsklassen 522

28.4.4 Entity Framework Core-Kontextklasse 523

28.4.5 Startcode 524

28.4.6 Erzeugte Datenbank 525

28.4.7 Datenzugriffscode 525

28.4.8 Benutzeroberfläche 528

28.5 N:M-Beziehungen zu sich selbst 530

29 Quellen im Internet 537

30 Stichwortverzeichnis (Index) 538

31 Werbung in eigener Sache 548



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

$39.00
Minimal
$44.00
Empfohlen
Nur das E-Book (PDF)

Nur das E-Book ohne Programmcodebeispiele

  • Deutsch

  • PDF

$44.00
Minimal
$49.00
Empfohlen

Bundles that include this book

Moderne Datenzugriffslösungen mit Entity Framework 6
Moderne Datenzugriffslösungen mit Entity Framework Core 2.0/2.1
2 Books
$69.00
Regular Price
$50.00
Paket Preis

Ü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

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