Entity Framework - Enum-Unterstützung

In Entity Framework können Sie mit dieser Funktion eine Eigenschaft für eine Domänenklasse definieren, die ein Aufzählungstyp ist, und sie einer Datenbankspalte eines Ganzzahltyps zuordnen. Entity Framework konvertiert dann den Datenbankwert in und aus der entsprechenden Aufzählung, während Daten abgefragt und gespeichert werden.

  • Aufzählungstypen bieten alle möglichen Vorteile, wenn Sie mit Eigenschaften arbeiten, für die eine feste Anzahl von Antworten vorliegt.

  • Die Sicherheit und Zuverlässigkeit einer Anwendung erhöhen sich, wenn Sie Aufzählungen verwenden.

  • Die Aufzählung erschwert es dem Benutzer erheblich, Fehler zu machen, und Probleme wie Injektionsangriffe sind nicht vorhanden.

  • In Entity Framework kann eine Aufzählung die folgenden zugrunde liegenden Typen haben:

    • Byte
    • Int16
    • Int32
    • Int64
    • SByte
  • Der zugrunde liegende Standardtyp der Aufzählungselemente ist int.

  • Standardmäßig hat der erste Enumerator den Wert 0, und der Wert jedes aufeinanderfolgenden Enumerators wird um 1 erhöht.

Schauen wir uns das folgende Beispiel an, in dem wir eine Entität in Designer erstellen und dann einige Eigenschaften hinzufügen.

Step 1 - Erstellen Sie ein neues Projekt über die Menüoption Datei → Neu → Projekt.

Step 2 - Wählen Sie im linken Bereich die Konsolenanwendung aus.

Step 3 - Geben Sie EFEnumDemo als Namen des Projekts ein und klicken Sie auf OK.

Step 4 - Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Projektnamen und wählen Sie die Menüoption Hinzufügen → Neues Element.

Step 5 - Wählen Sie im Bereich Vorlagen die Option ADO.NET-Entitätsdatenmodell aus.

Step 6 - Geben Sie EFEnumModel.edmx als Dateinamen ein und klicken Sie dann auf Hinzufügen.

Step 7 - Wählen Sie auf der Seite Assistent für Entitätsdatenmodelle die Option Leeres EF-Designermodell aus.

Step 8 - Klicken Sie auf Fertig stellen

Step 9 - Klicken Sie dann mit der rechten Maustaste auf das Designerfenster und wählen Sie Hinzufügen → Entität.

Das Dialogfeld Neue Entität wird wie in der folgenden Abbildung dargestellt angezeigt.

Step 10 - Geben Sie Abteilung als Entitätsname und DeptID als Eigenschaftsname ein, belassen Sie den Eigenschaftstyp als Int32 und klicken Sie auf OK.

Step 11 - Klicken Sie mit der rechten Maustaste auf die Entität und wählen Sie Neu hinzufügen → Skalareigenschaft.

Step 12 - Benennen Sie die neue Eigenschaft in DeptName um.

Step 13 - Ändern Sie den Typ der neuen Eigenschaft in Int32 (standardmäßig ist die neue Eigenschaft vom Typ String).

Step 14 - Um den Typ zu ändern, öffnen Sie das Eigenschaftenfenster und ändern Sie die Type-Eigenschaft in Int32.

Step 15 - Klicken Sie im Entity Framework Designer mit der rechten Maustaste auf die Eigenschaft Name und wählen Sie In Aufzählung konvertieren.

Step 16 - Geben Sie im Dialogfeld Aufzählungstyp hinzufügen Abteilungsnamen für den Aufzählungstypnamen ein, ändern Sie den zugrunde liegenden Typ in Int32 und fügen Sie dem Typ die folgenden Elemente hinzu: Physik, Chemie, Computer und Wirtschaft.

Step 17 - Klicken Sie auf OK.

Wenn Sie zum Modellbrowser-Fenster wechseln, sehen Sie, dass der Typ auch dem Knoten Aufzählungstypen hinzugefügt wurde.

Lassen Sie uns eine Datenbank aus dem Modell generieren, indem Sie alle im Kapitel Modell erster Ansatz genannten Schritte ausführen.

Step 1 - Klicken Sie mit der rechten Maustaste auf die Oberfläche von Entity Designer und wählen Sie Datenbank aus Modell generieren.

Das Dialogfeld Datenverbindung auswählen des Assistenten zum Generieren von Datenbanken wird angezeigt.

Step 2 - Klicken Sie auf die Schaltfläche Neue Verbindung.

Step 3 - Geben Sie den Servernamen und EnumDemo für die Datenbank ein und klicken Sie auf OK.

Step 4 - Ein Dialogfeld mit der Frage, ob Sie eine neue Datenbank erstellen möchten, wird angezeigt. Klicken Sie auf Ja.

Step 5- Klicken Sie auf Weiter. Der Assistent zum Erstellen einer Datenbank generiert eine DDL (Data Definition Language) zum Erstellen einer Datenbank. Klicken Sie nun auf Fertig stellen.

Step 6 - Klicken Sie mit der rechten Maustaste auf T-SQL Editor und wählen Sie Ausführen.

Step 7 - Um das generierte Schema anzuzeigen, klicken Sie im SQL Server-Objekt-Explorer mit der rechten Maustaste auf den Datenbanknamen und wählen Sie Aktualisieren.

Sie sehen die Tabelle Abteilungen in der Datenbank.

Schauen wir uns das folgende Beispiel an, in dem einige neue Abteilungsobjekte zum Kontext hinzugefügt und gespeichert werden. Und dann die Computerabteilung abrufen.

class Program {

   static void Main(string[] args) {

      using (var context = new EFEnumModelContainer()) {

         context.Departments.Add(new Department { DeptName = DepartmentNames.Physics});
         context.Departments.Add(new Department { DeptName = DepartmentNames.Computer});
         context.Departments.Add(new Department { DeptName = DepartmentNames.Chemistry});
         context.Departments.Add(new Department { DeptName = DepartmentNames.Economics});

         context.SaveChanges();

         var department = (
            from d in context.Departments
            where d.DeptName == DepartmentNames.Computer
            select d
         ).FirstOrDefault();

         Console.WriteLine(
            "Department ID: {0}, Department Name: {1}", 
               department.DeptID, department.DeptName
         );

         Console.ReadKey();
      }
   }
}

Wenn der obige Code ausgeführt wird, erhalten Sie die folgende Ausgabe:

Department ID: 2, Department Name: Computer

Wir empfehlen, dass Sie das obige Beispiel zum besseren Verständnis Schritt für Schritt ausführen.