2009-04-07 8 views
2

Je construis une nouvelle application basée sur MVC et en considérant LINQ-To-SQL/Entity Framework. J'ai une entité qui a un statut numérique Like (0 - Open, 1 - Active, 2 - Closed), Où devrais-je mettre la logique pour montrer la chaîne appropriée (Enum ??) dans la vue/contrôleur ou le modèle qui est généré automatiquement ? Devrais-je transférer toute cette logique dans la couche de gestion? Devrais-je ajouter une logique métier et une nouvelle propriété (pour afficher l'état des chaînes) aux classes partielles construites par LINQ-To-SQL?Comment montrer l'état numérique dans l'application MVC

Répondre

2

En fait, LINQ to SQL peut lier des entiers directement à énumérations (soit int (etc) ou [n][var]char données colonnes à la base de données), donc une réponse simple est de créer un ENUM (dans vos données/couche référentiel) et modifiez le dbml (généralement via le concepteur) de sorte qu'il utilise le type enum (entièrement qualifié) pour la colonne d'état.

Si ce n'est pas une option, alors je renommerais la propriété d'état dans la classe (encore via le dbml) à quelque chose comme StatusCode, et ajouterais une classe partielle qui retourne la représentation préférée (comme une énumération ou une string) ie

partial class YourType { // only do this if direct enum mapping isn't an option 
    public Status Status { // could also be string 
     get { 
      switch(StatusCode) { 
        case 0: return Status.Open; 
        // etc 
      } 
     } 
    } 
} 
+0

ne pas couler le int directement au type enum être mieux que commutateur/cas? obtenir {return (Status) StatusCode; } – Lucas

+0

@Lucas - s'ils pouvaient lancer directement, ils pourraient (en grande partie par définition) utiliser la liaison LINQ-to-SQL plus simple ... –

Questions connexes