34 votes

Enums avec EF code-first - méthode standard pour ensemencer DB puis utiliser?

Existe-t-il un moyen standard d’utiliser Enums dans EF en premier? Il semble y avoir quelques exemples utilisant une classe wrapper pour l'énum.

Cependant, j'aimerais pouvoir définir l'énumération et que les valeurs d'énum soient également intégrées dans la base de données à l'aide de l'initialiseur de base de données. Il ne semble pas y avoir grand intérêt à définir l’énumération et à créer un wrapper, si je dois ensuite ensemencer manuellement la table de base de données à partir de l’énumération.

71voto

Sergi Papaseit Points 8979

Malheureusement, enums ne sont pas pris en charge nativement sur EF 4.1. Voici une plutôt célèbre article sur la façon de traiter avec eux: Truquer les énumérations sur EF 4. Il ne, cependant, besoin d'un wrapper.

Il y a une façon simple de cartographier des enums en EF 4 toutefois: il suffit de créer un int propriété sur votre classe pour représenter l'int valeur de l'enum. C'est la propriété que l'EF devrait la carte, puis une "mini-wrapper" de la propriété pour vous permettre d'utiliser l'enum.

public class Appointment 
{   
    public int ID { get; set; }
    public string Description { get; set; }

    // This property will be mapped
    public int DayOfWeekValue { get; set; }

    public DayOfWeek Day
    {
        get { return (DayOfWeek) DayOfWeekValue; }
        set { DayOfWeekValue = (int) value; }
    }
}

public enum DayOfWeek
{
    Monday,
    Tuesday,
    Wednesday,
    Thursday,
    Friday,
    Saturday,
    Sunday
}

Sur la génération de la base de données, EF seront heureux de vous ignorer tout type elle ne sait pas comment la carte, mais l'int de la propriété sera mappé.

Note: Ceci est pris directement à partir de ma réponse à l'autre enum et EF question: EF de Code 4.1 Première carte enum enveloppe de type complexe

19voto

VinnyG Points 2996

-1voto

Amiram Korach Points 7101

J'ai écrit un post à ce sujet. Vous pouvez utiliser Code First Migrations pour ajouter vos valeurs enum à la base de données. Regardez ici: http://linqto.net/blog/2012/10/entity-framework-code-first-and-enum-support/

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X