Aufzählungs Unterstützung-Code FirstEnum Support - Code First

Hinweis

Nur EF5 : die Features, APIs usw., die auf dieser Seite erläutert wurden, wurden in Entity Framework 5 eingeführt.EF5 Onwards Only - The features, APIs, etc. discussed in this page were introduced in Entity Framework 5. Wenn Sie eine frühere Version verwenden, gelten manche Informationen nicht.If you are using an earlier version, some or all of the information does not apply.

In diesem Video und der schrittweisen exemplarischen Vorgehensweise wird die Verwendung von Enumerationstypen mit Entity Framework Code First erläutert.This video and step-by-step walkthrough shows how to use enum types with Entity Framework Code First. Außerdem wird veranschaulicht, wie Sie-auf--Aufstände in einer LINQ-Abfrage verwenden.It also demonstrates how to use enums in a LINQ query.

In dieser exemplarischen Vorgehensweise wird Code First verwendet, um eine neue Datenbank zu erstellen, aber Sie können Code First auch verwenden, um eine Zuordnung zu einer vorhandenen Datenbankherzustellen.This walkthrough will use Code First to create a new database, but you can also use Code First to map to an existing database.

Die Aufzählungs Unterstützung wurde in Entity Framework 5 eingeführt.Enum support was introduced in Entity Framework 5. Wenn Sie die neuen Funktionen wie Enumerationstypen, räumliche Datentypen und Tabellenwert Funktionen verwenden möchten, müssen Sie .NET Framework 4,5-Zielversion verwenden.To use the new features like enums, spatial data types, and table-valued functions, you must target .NET Framework 4.5. Visual Studio 2012 hat standardmäßig .NET 4,5 als Ziel.Visual Studio 2012 targets .NET 4.5 by default.

In Entity Framework kann eine Enumeration die folgenden zugrunde liegenden Typen aufweisen: Byte, Int16, Int32, Int64 oder SByte.In Entity Framework, an enumeration can have the following underlying types: Byte, Int16, Int32, Int64 , or SByte.

Video ansehenWatch the video

In diesem Video wird gezeigt, wie Enumerationstypen mit Entity Framework Code First verwendet werden.This video shows how to use enum types with Entity Framework Code First. Außerdem wird veranschaulicht, wie Sie-auf--Aufstände in einer LINQ-Abfrage verwenden.It also demonstrates how to use enums in a LINQ query.

Präsentiert von: Julia kornichPresented By: Julia Kornich

Video: WMV | MP4 | WMV (zip)Video: WMV | MP4 | WMV (ZIP)

VoraussetzungenPre-Requisites

Sie müssen Visual Studio 2012, Ultimate, Premium, Professional oder Web Express Edition installiert haben, um diese exemplarische Vorgehensweise abzuschließen.You will need to have Visual Studio 2012, Ultimate, Premium, Professional, or Web Express edition installed to complete this walkthrough.

 

Einrichten des ProjektsSet up the Project

  1. Öffnen Sie Visual Studio 2012Open Visual Studio 2012
  2. Zeigen Sie im Menü Datei auf neu, und klicken Sie dann auf Projekt .On the File menu, point to New, and then click Project
  3. Klicken Sie im linken Bereich auf **Visual C # **, und wählen Sie dann die Konsolen Vorlage aus.In the left pane, click Visual C#, and then select the Console template
  4. Geben Sie " enumcodefirst " als Namen des Projekts ein, und klicken Sie auf OK .Enter EnumCodeFirst as the name of the project and click OK

Definieren eines neuen Modells mit Code FirstDefine a New Model using Code First

Wenn Sie Code First Entwicklung verwenden, schreiben Sie in der Regel .NET Framework Klassen, die ihr konzeptionelles (Domänen-) Modell definieren.When using Code First development you usually begin by writing .NET Framework classes that define your conceptual (domain) model. Der folgende Code definiert die Department-Klasse.The code below defines the Department class.

Der Code definiert auch die departmentnames-Enumeration.The code also defines the DepartmentNames enumeration. Standardmäßig ist die Enumeration vom Typ int .By default, the enumeration is of int type. Die Name-Eigenschaft für die Department-Klasse ist vom Typ "departmentnames".The Name property on the Department class is of the DepartmentNames type.

Öffnen Sie die Datei Program.cs, und fügen Sie die folgenden Klassendefinitionen ein.Open the Program.cs file and paste the following class definitions.

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-TypsDefine the DbContext Derived Type

Zusätzlich zur Definition von Entitäten müssen Sie eine Klasse definieren, die von DbContext abgeleitet ist und DbSet<TEntity>-Eigenschaften bereitstellt.In addition to defining entities, you need to define a class that derives from DbContext and exposes DbSet<TEntity> properties. Die DbSet<TEntity>-Eigenschaften informieren den Kontext darüber, welche Typen Sie in das Modell einbeziehen möchten.The DbSet<TEntity> properties let the context know which types you want to include in the model.

Eine Instanz des von DbContext abgeleiteten Typs verwaltet die Entitätsobjekte während der Laufzeit, was das Auffüllen der Objekte mit Daten aus einer Datenbank, die Änderungsnachverfolgung und das persistente Speichern von Daten in der Datenbank umfasst.An instance of the DbContext derived type manages the entity objects during run time, which includes populating objects with data from a database, change tracking, and persisting data to the database.

Die Typen "dbcontext" und "dbset" werden in der EntityFramework-Assembly definiert.The DbContext and DbSet types are defined in the EntityFramework assembly. Wir fügen mit dem nuget-Paket "EntityFramework" einen Verweis auf diese dll hinzu.We will add a reference to this DLL by using the EntityFramework NuGet package.

  1. Klicken Sie in Projektmappen-Explorer mit der rechten Maustaste auf den Projektnamen.In Solution Explorer, right-click on the project name.
  2. Wählen Sie nuget-Pakete verwalten... aus.Select Manage NuGet Packages…
  3. Wählen Sie im Dialogfeld nuget-Pakete verwalten die Registerkarte Online aus, und wählen Sie das Paket EntityFramework aus.In the Manage NuGet Packages dialog, Select the Online tab and choose the EntityFramework package.
  4. Klicken Sie auf Install (Installieren).Click Install

Beachten Sie, dass neben der EntityFramework-Assembly auch Verweise auf System. ComponentModel. DataAnnotations und System. Data. Entity-Assemblys hinzugefügt werden.Note, that in addition to the EntityFramework  assembly, references to System.ComponentModel.DataAnnotations and System.Data.Entity assemblies are added as well.

Fügen Sie am Anfang der Program.cs-Datei die folgende using-Anweisung hinzu:At the top of the Program.cs file, add the following using statement:

using System.Data.Entity;

Fügen Sie in Program.cs die Kontext Definition hinzu.In the Program.cs add the context definition. 

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

 

Persistenz und Abrufen von DatenPersist and Retrieve Data

Öffnen Sie die Datei Program.cs, in der die Main-Methode definiert ist.Open the Program.cs file where the Main method is defined. Fügen Sie der Main-Funktion den folgenden Code hinzu.Add the following code into the Main function. Der Code fügt dem Kontext ein neues Abteilungs Objekt hinzu.The code adds a new Department object to the context. Anschließend werden die Daten gespeichert.It then saves the data. Der Code führt außerdem eine LINQ-Abfrage aus, die eine Abteilung zurückgibt, in der der Name departmentnames. English lautet.The code also executes a LINQ query that returns a Department where the name is DepartmentNames.English.

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.Compile and run the application. Das Programm erzeugt die folgende Ausgabe:The program produces the following output:

DepartmentID: 1 Name: English

 

Anzeigen der generierten DatenbankView the Generated Database

Wenn Sie die Anwendung zum ersten Mal ausführen, erstellt die Entity Framework eine Datenbank für Sie.When you run the application the first time, the Entity Framework creates a database for you. Da Visual Studio 2012 installiert ist, wird die Datenbank auf der localdb-Instanz erstellt.Because we have Visual Studio 2012 installed, the database will be created on the LocalDB instance. Standardmäßig benennt der Entity Framework die Datenbank nach dem voll qualifizierten Namen des abgeleiteten Kontexts (in diesem Beispiel enumcodefirst. enumtestcontext).By default, the Entity Framework names the database after the fully qualified name of the derived context (for this example that is EnumCodeFirst.EnumTestContext). Nachfolgend wird die vorhandene Datenbank verwendet.The subsequent times the existing database will be used.  

Beachten Sie Folgendes: Wenn Sie Änderungen am Modell vornehmen, nachdem die Datenbank erstellt wurde, sollten Sie Code First-Migrationen zum Aktualisieren des Datenbankschemas verwenden.Note, that if you make any changes to your model after the database has been created, you should use Code First Migrations to update the database schema. Ein Beispiel für die Verwendung von Migrationen finden Sie unter Code First einer neuen Datenbank .See Code First to a New Database for an example of using Migrations.

Gehen Sie folgendermaßen vor, um die Datenbank und die Daten anzuzeigen:To view the database and data, do the following:

  1. Wählen Sie im Hauptmenü von Visual Studio 2012 die Option SQL Server-Objekt-Explorer anzeigen aus - > SQL Server Object Explorer.In the Visual Studio 2012 main menu, select View -> SQL Server Object Explorer.
  2. Wenn localdb nicht in der Liste der Server enthalten ist, klicken Sie auf SQL Server mit der rechten Maustaste, und wählen Sie Hinzufügen aus, um eine Verbindung mit der localdb-Instanz herzustellen SQL Server die Standard Authentifizierung zu verwenden.If LocalDB is not in the list of servers, click the right mouse button on SQL Server and select Add SQL Server Use the default Windows Authentication to connect to the LocalDB instance
  3. Erweitern Sie den Knoten localdb.Expand the LocalDB node
  4. Erweitern Sie den Ordner Datenbanken , um die neue Datenbank anzuzeigen, und navigieren Sie zu der Abteilungs Tabelle, Code First keine Tabelle erstellt, die dem Enumerationstyp zugeordnet ist.Unfold the Databases folder to see the new database and browse to the Department table Note, that Code First does not create a table that maps to the enumeration type
  5. Um Daten anzuzeigen, klicken Sie mit der rechten Maustaste auf die Tabelle, und wählen Sie Daten anzeigenTo view data, right-click on the table and select View Data

ZusammenfassungSummary

In dieser exemplarischen Vorgehensweise haben wir uns mit der Verwendung von Enumerationstypen mit Entity Framework Code First beschäftigt.In this walkthrough we looked at how to use enum types with Entity Framework Code First.