© Kit8.net/Shutterstock.com
Azure Cosmos DB mit Entity Framework Core 3.x nutzen

NoSQL mit EF Core 3


Bis dato war es nur möglich, mit Entity Framework Core (eigentlich Entity Framework 3.x-6.x) auf relationale Datenbanken unterschiedlicher Hersteller zuzugreifen. Zwar war das Relationale bei Entity Framework Core nicht mehr fest eingebaut, sondern eine austauschbare (interne) Komponente, aber es dauerte bis zur Version 3.0, bis von Microsoft eine NoSQL-Datenbank verwendet werden konnte: Microsofts hauseigene Azure Cosmos DB.

Dieser Artikel setzt Kenntnisse über das Entity Framework Core 3.0 oder höher voraus, und auch ein paar Kenntnisse über die Azure Cosmos DB können beim Lesen der folgenden Zeilen nicht schaden. Ohne diese ging es leider nicht, diesen Artikel in vertretbaren Rahmen und Umfang zu erstellen.

Bereits seit Version 3.0 unterstützt das Entity Framework Core als erste Version von Grund auf eine nicht relationale Datenbank. Die Azure Cosmos DB ist eine NoSQL-Datenbank, auch Dokumentendatenbank, in der JSON-Dokumente gespeichert und abgefragt werden können (Abb. 1). Dabei unterstützt sie eine ganze Reihe von unterschiedlichen APIs, ist also in dieser Hinsicht quasi ein Chamäleon. Zu diesen APIs gehören aktuell Core (SQL), MongoDB, Cassandra, Azure Table und Gremlin (Apache TinkerPop) – Ende offen.

kansy_cosmosDB_EF_1.tif_fmt1.jpgAbb. 1: Azure Cosmos DB mit Core(SQL)-API im Überblick

Core (SQL) API

Entity Framework Core unterstützt das Core (SQL) API der Azure Comos DB. Daten werden also mit einem (einfachen) SQL-Dialekt abgefragt, Änderungen jeglicher Art über das HTTP-Protokoll mit entsprechenden Verben realisiert, da dieser Dialekt weder INSERT-, DELETE- noch UPDATE-Anweisungen kennt. Dabei wird das Entity Framework Core im Wesentlichen so verwendet wie mit einer relationalen Datenbank. Es gibt DbContext, SaveChanges(), OnModelCreating(), die Konfiguration via Dependency Injection, Abfragen via LINQ to Entitites, etc. An machen (einfachen) Abfragen kann man noch nicht einmal erkennen, für welche Art von Datenbank diese schließlich ausgeführt werden. Und doch gibt es weitreichende Unterschiede, auf die dieser Artikel eingeht. Aus Platzgründen bleibt unerwähnt, was sich nicht ändert. Zudem finden die Attribute (wenn vorhanden) zur Model-Gestaltung zu Gunsten der Erweiterungsmethoden in OnModelCreating() keinen Platz.

Weitreichende Unterschiede

Ein Dokument in einer NoSQL-Datenbank muss zwar ein paar Regeln weniger befolgen, ist aber ansonsten frei in Aufbau und Inhalt. So etwas wie eine feste Struktur, wie sie in einer relationalen Datenbank mit ihren Tabellen zwingend ist...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang