Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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 wird gezeigt, wie Enum-Typen mit dem Entity-Framework-Designer verwendet werden. Außerdem wird veranschaulicht, wie Enums in einer LINQ-Abfrage verwendet werden.
In dieser exemplarischen Vorgehensweise wird "Model First" verwendet, um eine neue Datenbank zu erstellen, aber der EF-Designer kann auch mit dem Database First Workflow verwendet werden, um eine vorhandene Datenbank zuzuordnen.
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.
Video ansehen
In diesem Video wird gezeigt, wie Enum-Typen mit dem Entity Framework Designer verwendet werden. Außerdem wird veranschaulicht, wie Enums in einer LINQ-Abfrage verwendet werden.
Präsentiert von: Julia Kornich
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
- Öffnen von Visual Studio 2012
- Zeigen Sie im Menü "Datei " auf "Neu", und klicken Sie dann auf "Projekt".
- Klicken Sie im linken Bereich auf Visual C#, und wählen Sie dann die Konsolenvorlage aus.
- Geben Sie "EnumEFDesigner " als Namen des Projekts ein, und klicken Sie auf "OK".
Erstellen eines neuen Modells mithilfe des EF-Designers
- Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Projektnamen, zeigen Sie auf "Hinzufügen", und klicken Sie dann auf "Neues Element".
- Wählen Sie " Daten " im linken Menü und dann im Bereich "Vorlagen " ADO.NET Entitätsdatenmodell aus.
- Geben Sie "EnumTestModel.edmx " für den Dateinamen ein, und klicken Sie dann auf "Hinzufügen".
- Wählen Sie auf der Seite "Entitätsdatenmodell-Assistent" im Dialogfeld "Modellinhalt auswählen " die Option "Leeres Modell " aus.
- Klicken Sie auf Fertig stellen.
Der Entitäts-Designer, der eine Entwurfsoberfläche zum Bearbeiten des Modells bereitstellt, wird angezeigt.
Der Assistent führt die folgenden Aktionen aus:
- Generiert die EnumTestModel.edmx-Datei, die das konzeptionelle Modell, das Speichermodell und die Zuordnung zwischen ihnen definiert. Legt die Eigenschaft 'Metadaten-Artefaktverarbeitung' der .edmx-Datei auf "In Ausgabeassembly einbetten" fest, sodass die generierten Metadatendateien in die Assembly eingebettet werden.
- Fügt einen Verweis auf die folgenden Assemblys hinzu: EntityFramework, System.ComponentModel.DataAnnotations und System.Data.Entity.
- Erstellt EnumTestModel.tt und EnumTestModel.Context.tt Dateien und fügt sie unter der edmx-Datei hinzu. Diese T4-Vorlagendateien generieren den Code, der den von DbContext abgeleiteten Typ und POCO-Typen definiert, die den Entitäten im edmx-Modell zugeordnet sind.
Hinzufügen eines neuen Entitätstyps
- Klicken Sie mit der rechten Maustaste auf einen leeren Bereich der Entwurfsoberfläche, wählen Sie "Hinzufügen –> Entität" aus, das Dialogfeld "Neue Entität" wird angezeigt.
- Geben Sie "Abteilung" für den Typnamen an, und geben Sie "DepartmentID" für den Schlüsseleigenschaftsnamen an, lassen Sie den Typ als "Int32" zurück.
- Klicken Sie auf OK
- Klicken Sie mit der rechten Maustaste auf die Entität, und wählen Sie "Neu hinzufügen "> Skalareigenschaft" aus.
- Benennen Sie die neue Eigenschaft in "Name" um.
- Ändern Sie den Typ der neuen Eigenschaft in Int32 (standardmäßig ist die neue Eigenschaft vom Typ String) Um den Typ zu ändern, öffnen Sie das Eigenschaftenfenster, und ändern Sie die Type-Eigenschaft in Int32.
- Fügen Sie eine weitere skalare Eigenschaft hinzu, und benennen Sie sie in "Budget" um, ändern Sie den Typ in "Dezimal"
Hinzufügen eines Enum-Typs
Klicken Sie im Entity Framework-Designer mit der rechten Maustaste auf die Name-Eigenschaft und wählen Sie "In enum konvertieren" aus.
Geben Sie im Dialogfeld "Enumeration hinzufügen " " DepartmentNames " für den Enumerationstypnamen ein, ändern Sie den zugrunde liegenden Typ in Int32, und fügen Sie dann die folgenden Member zum Typ hinzu: Englisch, Mathematik und Wirtschaftswissenschaften
Drücken Sie "OK".
Speichern des Modells und Erstellen des Projekts
Hinweis
Beim Erstellen könnten Warnungen zu nicht zugeordneten Entitäten und Zuordnungen in der Fehlerliste erscheinen. Sie können diese Warnungen ignorieren, da nach der Auswahl, die Datenbank aus dem Modell zu generieren, die Fehler nicht mehr auftreten.
Wenn Sie sich das Eigenschaftenfenster ansehen, werden Sie feststellen, dass der Typ der Eigenschaft "Name" in "DepartmentNames " geändert wurde und der neu hinzugefügte Enumerationstyp der Liste der Typen hinzugefügt wurde.
Wenn Sie zum Fenster "Modellbrowser" wechseln, sehen Sie, dass der Typ auch dem Knoten "Enum-Typen" hinzugefügt wurde.
Hinweis
Sie können auch neue Enumerationstypen aus diesem Fenster hinzufügen, indem Sie auf die rechte Maustaste klicken und "Enumerationstyp hinzufügen" auswählen. Sobald der Typ erstellt wurde, wird er in der Liste der Typen angezeigt, und Sie können ihn einer Eigenschaft zuordnen.
Datenbank anhand des Modells generieren
Jetzt können wir eine Datenbank generieren, die auf dem Modell basiert.
- Klicken Sie mit der rechten Maustaste auf der Entitäts-Designer-Oberfläche auf ein leeres Leerzeichen, und wählen Sie "Datenbank aus Modell generieren" aus.
- Das Dialogfeld 'Datenverbindung auswählen' des Assistenten 'Datenbank generieren' wird angezeigt, klicken Sie auf die Schaltfläche ' Neue Verbindung angeben '(localdb)\mssqllocaldb ' für den Servernamen und 'EnumTest ' für die Datenbank, und klicken Sie auf 'OK'.
- Ein Dialogfeld, in dem Sie gefragt werden, ob eine neue Datenbank erstellt werden soll, klicken Sie auf "Ja".
- Klicken Sie auf Weiter und der Assistent zum Erstellen von Datenbanken generiert Datendefinitionssprache (DDL) zum Erstellen einer Datenbank. Die generierte DDL wird im Dialogfeld "Zusammenfassung und Einstellungen" angezeigt. Beachten Sie, dass die DDL keine Definition für eine Tabelle enthält, die dem Enumerationstyp zugeordnet ist.
- Klicken Sie auf Fertig. Das Klicken auf "Fertig" führt das DDL-Skript nicht aus.
- Der Assistent zum Erstellen von Datenbanken führt folgendes aus: Öffnet die EnumTest.edmx.sql im T-SQL-Editor Generiert das Speicherschema und Zuordnungsabschnitte der EDMX-Datei fügt der App.config Datei Verbindungszeichenfolgeninformationen hinzu.
- Klicken Sie im T-SQL-Editor mit der rechten Maustaste und wählen Sie Ausführen. Der Dialog "Verbinden mit Server" erscheint, geben Sie die Verbindungsinformationen aus Schritt 2 ein und klicken Sie auf Verbinden.
- Um das generierte Schema anzuzeigen, klicken Sie im SQL Server-Objekt-Explorer mit der rechten Maustaste auf den Datenbanknamen, und wählen Sie "Aktualisieren" aus.
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 EnumTestModelContainer())
{
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} and 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
Um Daten in der Datenbank anzuzeigen, klicken Sie im SQL Server-Objekt-Explorer mit der rechten Maustaste auf den Datenbanknamen, und wählen Sie "Aktualisieren" aus. Klicken Sie dann auf die rechte Maustaste auf der Tabelle, und wählen Sie "Daten anzeigen" aus.
Zusammenfassung
In dieser exemplarischen Vorgehensweise haben wir uns damit beschäftigt, wie Enum-Typen unter Verwendung des Entity Framework-Designers zugeordnet werden und Enums im Code verwenden.