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