Untersuchen Sie die verschiedenen Ansätze zum Modellieren von Entitäten in Entity Framework

Entity Framework vereinfacht den Datenzugriff in Ihrer Anwendung, indem Sie Code schreiben können, um CRUD-Vorgänge (Erstellen, Lesen, Aktualisieren und Löschen) auszuführen, ohne direkt mit dem zugrunde liegenden Datenbankanbieter interagieren zu müssen. Es gibt drei Ansätze zum Modellieren Ihrer Entitäten in Entity Framework: Code First, Model First und Database First. Dieser Artikel beschreibt alle diese drei Ansätze und ihre Vor- und Nachteile.

Was ist das Entity Framework? Warum all der Hype?

Das Entity Framework von Microsoft ist ein erweitertes ORM, mit dem Sie das Objektmodell Ihrer Anwendung vom Datenmodell isolieren können. Es ist ein Open Source ORM-Framework für ADO.Net und ist Teil des .Net Frameworks. Bei der Verwendung von ORM-Tools können Sie sich auf die Geschäftslogik der Anwendung konzentrieren und Daten mit viel weniger Code in der Datenbank speichern. Sie können einen ORM nutzen, um Daten zwischen inkompatiblen Typsystemen zu konvertieren. Sie können Ihre Domänenobjekte in der zugrunde liegenden Datenbank speichern, ohne sich um die internen Komplikationen bei der tatsächlichen Speicherung der Daten kümmern zu müssen. Das Entity Framework ist ein ausgereiftes ORM von Microsoft und kann mit einer Vielzahl von Datenbanken verwendet werden.

In den folgenden Abschnitten werden wir jeden der drei Ansätze zur Modellierung von Entitäten mithilfe von Entity Framework untersuchen.

Code zuerst

Der Code First-Ansatz hilft Ihnen beim Erstellen der Entitäten in Ihrer Anwendung, indem Sie sich auf die Domänenanforderungen konzentrieren. Im Wesentlichen können Sie Domain Driven Design (DDD) mit diesem Ansatz verfolgen. Sobald Ihre Entitäten definiert und die Konfigurationen angegeben wurden, können Sie die Datenbank im laufenden Betrieb mit beiden erstellen. Mit dem Code First-Ansatz haben Sie mehr Kontrolle über Ihren Code - Sie müssen nicht mehr mit automatisch generiertem Code arbeiten. Ich mag diesen Ansatz, da er Ihnen viel Flexibilität und Kontrolle gibt. Wenn Sie die Domänenklassen bereit haben, würde ich diesen Ansatz immer bevorzugen, da Sie Ihre Datenbank einfach aus den Domänenklassen erstellen können.

Der Nachteil dieses Ansatzes besteht darin, dass alle Änderungen am zugrunde liegenden Datenbankschema verloren gehen. Bei diesem Ansatz definiert und erstellt Ihr Code die Datenbank. Mit dem Code First-Ansatz können Sie Entity Framework verwenden und das Entitätsmodell ohne Designer- oder XML-Dateien definieren. Sie können den POCO-Ansatz (Plain Old CLR Objects) verwenden, um das Modell zu definieren und Ihre Datenbank zu generieren.

Bei diesem Ansatz erstellen Sie normalerweise die Entitätsklassen. Hier ist ein Beispiel; Eine typische Entitätsklasse ist unten angegeben.

 public class Product

   {

      public int ProductId { get; set; }

      public string ProductName { get; set; }

      public float Price { get; set; }

   }

Als Nächstes sollten Sie einen benutzerdefinierten Datenkontext definieren, indem Sie die DbContext-Klasse wie unten gezeigt erweitern.

public class Context : DbContext

   {

      public DbSet Products { get; set; }

   }

Zuletzt sollten Sie die Verbindungszeichenfolge in der Konfigurationsdatei angeben. Du bist fertig!

Datenbank zuerst

Sie können den Database First-Ansatz verwenden, wenn die Datenbank bereits entworfen und bereit ist. Bei diesem Ansatz wird das Entity Data Model (EDM) aus der zugrunde liegenden Datenbank erstellt. Als Beispiel verwenden Sie den ersten Datenbankansatz, wenn Sie die edmx-Dateien in der Visual Studio-IDE aus der Datenbank generieren. Manuelle Änderungen an der Datenbank sind problemlos möglich und Sie können das EDM bei Bedarf jederzeit aktualisieren (z. B. wenn sich das Schema der zugrunde liegenden Datenbank ändert). Aktualisieren Sie dazu einfach das EDM aus der Datenbank in der Visual Studio-IDE.

Modell zuerst

Im Model First-Ansatz können Sie zuerst das EDM erstellen und dann die Datenbank daraus generieren. Normalerweise erstellen Sie mit dem Assistenten für Entitätsdatenmodelle in Visual Studio ein leeres EDM, definieren die Entitäten und ihre Beziehungen in Visual Studio und generieren dann die Datenbank aus diesem definierten Modell. Sie können Entitäten einfach erstellen und ihre Beziehungen und Zuordnungen im Designer in Visual Studio definieren. Sie können auch die Key-Eigenschaft und die Datentypen für die Eigenschaften Ihrer Entitäten mithilfe des Designers angeben. Sie können Teilklassen verwenden, um zusätzliche Funktionen in Ihren Entitäten zu implementieren.

OK, aber wann sollten Sie den Model First-Ansatz verwenden? Wenn weder die Domänenklassen noch die Datenbank bereit sind und Sie das Datenmodell lieber mit einem visuellen Designer definieren möchten, ist dieser Ansatz genau das Richtige für Sie. Wie beim Code First-Ansatz gehen jedoch beim Model First-Ansatz manuelle Änderungen an der Datenbank verloren, wenn das Modell die Datenbank definiert.