2016-06-27 18 views
1

zuordnen Ich habe das Internet gesucht, wie enum in ASP.NET MVC-Projekt mit Entity Framework 6 (Code First und Fluent Api), die Ergebnisse meiner Die Suche hat gezeigt, dass diese Art von Mapping nicht trival ist wie in Java (Hibernate + JPA).Wie Enum Eigenschaft in Entity Framework 6 Code First und Fluent Api

Ich fand einen Artikel, der eine Idee gibt, wie man das Problem löst, aber nicht weiß, ob es einen anderen Weg gibt.

Artikel: http://eliot-jones.com/2015/03/entity-framework-enum

Sie konnten Erfahrungen auf diese Art von Mapping teilen?

Was wäre die korrekte oder offizielle Art Enum zu mappen?

Ich arbeite mit der Möglichkeit, dass das Feld String in der Datenbank ist und aus diesem Grund möchte ich wissen, ob Sie mit dem Ordinaltyp oder dem Namen der Aufzählung arbeiten können.

Ich warte auf eine Rückkehr und ich danke Ihnen für Ihre Aufmerksamkeit.

+0

Warum ordnen Sie es nicht einfach einem int-Feld in Ihrer Datenbank zu? –

+0

Sie müssen dies nicht einmal tun, sondern es einfach als normal zuordnen, und solange der Typ des Datenbanktyps dem zugrunde liegenden Enum-Typ (Byte, Kurz, Int usw. ...) entspricht, wird es funktionieren. –

+0

Sie müssen nichts tun. Ihr Modell hat eine Eigenschaft dieses Aufzählungstyps. Ordnen Sie es einfach wie jede andere Eigenschaft zu. Stellen Sie sicher, dass Sie den Enum-Typ angeben, obwohl es kein int ist, wie bei der Verwendung eines byte, short, int oder long. Die Datenbank wird dann automatisch dieselbe Spalte wie die Enumeration haben (Tinyint, Smallint, Int, Bigint). – Igor

Antwort

0

In Hibernate sollten Sie alle Entitäten selbst zuordnen, aber Entity Framework hat ein Standardverhalten für das Zuordnen von Entitäten, die Sie mit dbset in dbcontext registrieren.

sollten Sie fließende API verwenden, wo Standardverhalten von EF Ihren Zweck nicht erfüllt. Aber in Ihrer Sache (Enums in EF) funktioniert das Standardverhalten richtig und Sie müssen nichts tun. Es speichert Enumeration als int in der Datenbank. Entity Framework Enum Support