Freigeben über


Enum-Unterstützung – Code First

Hinweis

NUR AB EF5 – Die auf dieser Seite besprochenen Features, APIs usw. wurden in Entity Framework 5 eingeführt. Wenn Sie eine frühere Version verwenden, gelten einige oder alle Informationen nicht.

In diesem Video und der Schritt-für-Schritt-Anleitung erfahren Sie, wie Sie Enumerationstypen mit Entity Framework Code First verwenden können. Außerdem wird veranschaulicht, wie Enums in einer LINQ-Abfrage verwendet werden.

In dieser exemplarischen Vorgehensweise wird Code First zum Erstellen einer neuen Datenbank verwendet, Sie können aber auch Code First verwenden, um eine vorhandene Datenbank abzubilden.

Die Enumerationsunterstützung wurde in Entity Framework 5 eingeführt. Um die neuen Features wie Enumerationen, räumliche Datentypen und Tabellenwertfunktionen zu verwenden, müssen Sie .NET Framework 4.5 verwenden. Visual Studio 2012 zielt standardmäßig auf .NET 4.5 ab.

In Entity Framework kann eine Enumeration die folgenden zugrunde liegenden Typen aufweisen: Byte, Int16, Int32, Int64 oder SByte.

Sehen Sie sich das Video an

In diesem Video wird gezeigt, wie Enum-Typen mit Entity Framework Code First verwendet werden. Außerdem wird veranschaulicht, wie Enums in einer LINQ-Abfrage verwendet werden.

Präsentiert von: Julia Kornich

Video: WMV | MP4 | WMV (ZIP)

Voraussetzungen

Sie müssen Visual Studio 2012, Ultimate, Premium, Professional oder Web Express Edition installiert haben, um diese exemplarische Vorgehensweise abzuschließen.

 

Einrichten des Projekts

  1. Öffnen von Visual Studio 2012
  2. Zeigen Sie im Menü "Datei " auf "Neu", und klicken Sie dann auf "Projekt".
  3. Klicken Sie im linken Bereich auf Visual C#, und wählen Sie dann die Konsolenvorlage aus.
  4. Geben Sie "EnumCodeFirst" als Namen des Projekts ein, und klicken Sie auf "OK".

Ein neues Modell mithilfe des Code-First-Ansatzes definieren

Beim Verwenden der Code First-Entwicklung beginnen Sie in der Regel mit dem Schreiben von .NET Framework-Klassen, die Ihr konzeptionelles (Domänen)-Modell definieren. Der folgende Code definiert die Abteilungsklasse.

Der Code definiert auch die DepartmentNames-Aufzählung. Standardmäßig ist die Aufzählung vom Typ "int ". Die Eigenschaft "Name" in der Klasse "Abteilung" ist von dem Typ "DepartmentNames".

Öffnen Sie die datei Program.cs, und fügen Sie die folgenden Klassendefinitionen ein.

public enum DepartmentNames
{
    English,
    Math,
    Economics
}     

public partial class Department
{
    public int DepartmentID { get; set; }
    public DepartmentNames Name { get; set; }
    public decimal Budget { get; set; }
}

 

Definieren des abgeleiteten DbContext-Typs

Zusätzlich zum Definieren von Entitäten müssen Sie eine Klasse definieren, die von DbContext abgeleitet wird und DbSet<TEntity-Eigenschaften> verfügbar macht. Die DbSet<TEntity-Eigenschaften> lassen den Kontext wissen, welche Typen in das Modell eingeschlossen werden sollen.

Eine Instanz des vom DbContext abgeleiteten Typs verwaltet die Entitätsobjekte während der Laufzeit, einschließlich auffüllen von Objekten mit Daten aus einer Datenbank, Änderungsnachverfolgung und Beibehalten von Daten in der Datenbank.

Die Typen DbContext und DbSet werden in der EntityFramework-Assembly definiert. Wir fügen mithilfe des EntityFramework NuGet-Pakets einen Verweis auf diese DLL hinzu.

  1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Projektnamen.
  2. Wählen Sie „NuGet-Pakete verwalten…“
  3. Wählen Sie im Dialogfeld "NuGet-Pakete verwalten" die Registerkarte "Online " und dann das EntityFramework-Paket aus.
  4. Klicken Sie auf Install (Installieren).

Beachten Sie, dass zusätzlich zur EntityFramework-Assembly auch Verweise auf System.ComponentModel.DataAnnotations- und System.Data.Entity-Assemblys hinzugefügt werden.

Fügen Sie oben in der Program.cs-Datei die folgende using-Anweisung hinzu:

using System.Data.Entity;

Fügen Sie in der Program.cs die Kontextdefinition hinzu. 

public partial class EnumTestContext : DbContext
{
    public DbSet<Department> Departments { get; set; }
}

 

Speichern und Abrufen von Daten

Öffnen Sie die Program.cs Datei, in der die Main-Methode definiert ist. Fügen Sie der Hauptfunktion den folgenden Code hinzu. Der Code fügt dem Kontext ein neues Department-Objekt hinzu. Anschließend werden die Daten gespeichert. Der Code führt auch eine LINQ-Abfrage aus, die eine Abteilung zurückgibt, in der der Name "DepartmentNames.English" lautet.

using (var context = new EnumTestContext())
{
    context.Departments.Add(new Department { Name = DepartmentNames.English });

    context.SaveChanges();

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

    Console.WriteLine(
        "DepartmentID: {0} Name: {1}",
        department.DepartmentID,  
        department.Name);
}

Kompilieren Sie die Anwendung, und führen Sie sie aus. Das Programm erzeugt die folgende Ausgabe:

DepartmentID: 1 Name: English

 

Generierte Datenbank anzeigen

Wenn Sie die Anwendung zum ersten Mal ausführen, erstellt Das Entity Framework eine Datenbank für Sie. Da Visual Studio 2012 installiert ist, wird die Datenbank in der LocalDB-Instanz erstellt. Standardmäßig benennt das Entity Framework die Datenbank nach dem vollqualifizierten Namen des abgeleiteten Kontexts (für dieses Beispiel ist EnumCodeFirst.EnumTestContext). Die nachfolgenden Zeiten, in denen die vorhandene Datenbank verwendet wird.  

Wenn Sie Änderungen am Modell vornehmen, nachdem die Datenbank erstellt wurde, sollten Sie code First Migrationen verwenden, um das Datenbankschema zu aktualisieren. Ein Beispiel für die Verwendung von Migrationen finden Sie unter Code First to a New Database .

Gehen Sie wie folgt vor, um die Datenbank und Die Daten anzuzeigen:

  1. Wählen Sie im Hauptmenü von Visual Studio 2012 die Option Ansicht ->SQL Server-Objekt-Explorer aus.
  2. Wenn LocalDB nicht in der Liste der Server enthalten ist, klicken Sie mit der rechten Maustaste auf SQL Server, und wählen Sie "SQL Server hinzufügen" aus. Verwenden Sie die standardmäßige Windows-Authentifizierung, um eine Verbindung mit der LocalDB-Instanz herzustellen.
  3. Erweitern des LocalDB-Knotens
  4. Entfalten Sie den Ordner "Datenbanken ", um die neue Datenbank anzuzeigen und zur Tabelle "Abteilung " zu navigieren. Beachten Sie, dass Code First keine Tabelle erstellt, die dem Enumerationstyp zugeordnet ist.
  5. Zum Anzeigen von Daten klicken Sie mit der rechten Maustaste auf die Tabelle, und wählen Sie "Daten anzeigen" aus.

Zusammenfassung

In dieser Anleitung haben wir untersucht, wie Enum-Typen mit Entity Framework Code First verwendet werden.