2010-10-08 14 views
0

Nous avons actuellement une table "Recherche" qui contient un ensemble de choix possibles pour des choses comme une liste déroulante. S'il s'agissait d'une liste d'abréviations d'état, LookupID représenterait l'ensemble et LookupItemID représenterait l'état individuel.ASP.NET MVC 2 Afficher les listes DDL du modèle: Où stocker les choix, code fixe dans une vue ou stocker dans une base de données?

customerID int  PK 
lookupID  int  PK 
lookupItemID int  PK 
lookupValue string 

Ceci adresse les options de stockage DDL, mais pas comment elles devraient se retrouver dans la vue. Il semble fou de configurer l'intégrité référentielle entre chaque table qui a une liste d'options. Par exemple, nous avons une "liste d'acheteurs" qui contient une liste de noms d'acheteurs, utilisés dans l'écran Produit (certains acheteurs gèrent certains produits)

Y at-il un moyen d'obtenir la liste d'options dans la vue? Que diriez-vous de savoir quelle liste est utilisée pour quel champ? Stocker le nom du champ dans la table ressemble à une solution EAV, que nous voulons éviter. Cependant, nous devons stocker les options pour un champ quelque part.

Des suggestions?

Répondre

1

J'ai généralement vu cela manipulé de deux manières, chacune avec des avantages et des inconvénients. Une façon serait de créer une table pour chaque recherche. Cela permet de réduire la redondance côté base de données mais ajoute beaucoup plus de jointures sur le côté reporting. J'ai également vu des scénarios où créer une table d'options où chaque fois que vous avez une liste déroulante les valeurs pour la liste déroulante sont stockées dans la table d'options. Si vous utilisez une table d'options, vous souhaiterez qu'une colonne OptionGroup qui est utilisée pour désigner un groupe d'options (par opposition à un champ en tant que groupe peut être réutilisée pour plusieurs champs). Les avantages de l'utilisation d'une table par rapport à plusieurs sont un nombre réduit de tables à administrer.

Si les options dans l'une des DropDowns sont une liste très définie comme Active/Inactive, j'ai également vu l'utilisation d'un Enum sur le côté du code utilisé en logique comme User.status == Status.Active est plus convivial que User.status == 5 ....

L'utilisation d'un ou plusieurs tableaux dépend vraiment du reste de l'architecture du système, mais pour les sites plus petits, je trouve que je préfère un tableau car il est plus facile de créer un administrateur ui.

+0

Ça sonne bien. Nous allons probablement utiliser la table unique. Toujours curieux de savoir comment associer quels champs utilisent quels ensembles de recherche, et comment les transmettre au MVC ViewModel. –

+0

Je suppose que nous pourrions simplement charger le dictionnaire ViewData [], mais je voudrais vraiment incorporer toutes les données dans le modèle unique envoyé à la vue. –