Asynchrone Datenbankzugriffe mit Microsofts Entity Framework 6.0

Die neue Version 6.0 des objektrelationalen Mappers unterstützt nun async/await, Protokollierung, eigene Konventionen und Stored Procedures für Code First. Außerdem läuft das Entity Framework nicht nur auf .NET 4.5.1, sondern auch auf .NET 4.0.

In Pocket speichern vorlesen Druckansicht 32 Kommentare lesen
Lesezeit: 3 Min.
Von
  • Dr. Holger Schwichtenberg

Gleichzeitig mit .NETFramework 4.5.1 und Visual Studio 2013 ist auch eine neue Version von Microsofts objektrelationalem Mapper (ORM) Entity Framework erschienen. Sie ist der Nachfolger der im August 2012 veröffentlichten Version 5.0. Entity Framework 6.0 gehört nicht zum neuen .NET-Framework-Release, sondern ist ein eigenständiges Paket, das auf Microsoft Paketportal NuGet bereitsteht. Nach der Installation von Visual Studio 2013 landet das Paket aber automatisch auf der Festplatte. Bei der Umstellung von frĂĽheren Versionen muss der Entwickler beachten, dass sich infolge der Entkopplung beider Frameworks einige Namensräume geändert haben. Bestehender Programmcode wird deshalb nicht ohne Ă„nderungen mit der neuen Version kompilieren.

Hervorzuheben ist nun die UnterstĂĽtzung fĂĽr asynchrone Operationen nach dem "Task-based asychronous Pattern" (TAP), das Microsoft in .NET 4.5 mit den neuen SchlĂĽsselwörtern async und await in die Sprachen C# und Visual Basic integriert hatte. In .NET 4.5 waren aber nur klassische Datenbankoperationen mit Connection, Command und DataReader durch TAP möglich. Das Entity Framework 6.0 bietet nun asynchrone Operationen auch auf der ORM-Ebene mit zahlreichen asynchronen Operationen (z. B. ToListAsync(), ForEachAsync(), SaveChangesAsync()).

Microsoft hat außerdem die in Entity Framework lange vermisste Möglichkeit zur einfachen Protokollierung aller ausgeführten SQL-Befehle nachgerüstet. Zum Beispiel kann sich der Entwickler nun mit dem Befehl Context.DataBase.Log = Console.WriteLine alle Befehle im Konsolenfenster ausgeben lassen. Über DatabaseLogFormatter und Implementierungen des IDbCommandInterceptor-Interface kann er Einfluss auf Art und Umfang der Protokollierung nehmen.

FĂĽr Entwickler, die nach dem Code-First-Modell arbeiten, bietet Entity Framework 6.0 die Generierung von Stored Procedures an – allerdings zunächst nur fĂĽr INSERT, UPDATE und DELETE. Das Laden der Daten erfolgt weiterhin ĂĽber direkten Tabellenzugriff. Ebenso neu fĂĽr "Code First" ist die Möglichkeit, eigene Konventionsklassen zu schreiben. Bei dem Programmierparadigma entsteht das Datenbankschema automatisiert aus dem Objektmodell auf Basis von Konventionen oder expliziter Konfigurationen. Bisher konnte der Entwickler nur die Konventionen von Microsoft zu- oder abschalten – jetzt kann er eigene schaffen.

DarĂĽber hinaus bietet das neue Entity Framework viele kleinere Ăśberarbeitungen, etwa in den Bereichen TransaktionsunterstĂĽtzung, Mandantenfähigkeit, Testen mit Mock-Frameworks, eingebettete Klassen und bei der API der DbContext-Klasse. Ein groĂźer Schritt vorwärts ist die interne Modularisierung des Entity Framework, die die Erweiterbarkeit und Anpassbarkeit des ORM stark verbessert. Positiv zu bewerten ist auch, dass das Entity Framework 6.0 anders als die Vorgängerversion auch auf .NET Framework 4.0 läuft. (ane)