Nous travaillons sur un système d'information hospitalier écrit en C# et utilisant NHibernate pour mapper des objets à la base de données. Le modèle MVC est utilisé pour séparer la logique métier de l'interface utilisateur. Voici le problème,Obtention d'ensembles de chaînes dans le calque de présentation
Comment obtenez-vous différents ensembles de chaînes de taille variable à l'interface utilisateur?
Par exemple, un objet Contact
possède une propriété nommée City
qui contient le contact de la ville. Dans le pays où l'application est écrite pour plus de 80 villes. Comment pourriez-vous écrire ces villes dans une zone de liste déroulante? (ou une grille de données, des tableaux, ...) Dans cet exemple, le numéro de ville est fixe. Il n'est pas nécessaire d'ajouter une autre ville pendant longtemps. (Si la liste des villes change, recompiler n'est pas un problème)
Par exemple, un objet Contact
a une autre propriété nommée FooBar
qui va contenir 1000 valeurs de chaînes différentes et ces valeurs vont être sélectionnées dans une liste déroulante pour cette propriété. Et cet ensemble peut être développé si les utilisateurs le veulent. Comment charger la combo avec ces valeurs? (Si la liste de chaînes statiquement écrit à l'objet zone de liste déroulante, la recompilation est un problème)
J'ai différentes solutions comme ci-dessous
- Toutes les valeurs de chaîne statiquement écrit zone de liste déroulante dans le code ou le concepteur
- Obtenez le les valeurs d'un fichier de ressources
- Écrivez ces valeurs à un fichier XML (en fait, comme ci-dessus, mais pas besoin de recompiler)
- Faire un objet
City
et obtenir les valeurs dans une liste deCITY
table avec NHibernate - Créez une classe nommée
StringHolder
qui a une propriétéType
etValue
. Toutes les valeurs de chaîne (y comprisCity
etFooBar
) seraient écrites dans une seule table nomméeSTRINGHOLDER
. Et obtenez ces valeurs avec une clé comme "CITY" ou "FOOBAR" avec NHibernate.
Lequel choisiriez-vous? Ou pourriez-vous me suggérer un autre?
Merci à tous
Par exemple, chaque contact ajouté à la base de données possède un champ City et FooBar provenant de zones de liste déroulante. Donc, ce n'est pas si mort :) Dans certains ensembles de chaînes, certaines des valeurs de chaîne ont plus de 100 caractères. Pour chaque contact, une ligne ajoutée et toutes les lignes prendront 100 caractères pour un seul champ. – xelon
Si je fais comme ça il y a un problème de "normalisation". La plupart des lignes d'une table auront la même valeur sur le champ FOOBAR. Si je fais des classes pour chaque ensemble de valeurs de chaîne, la conception du domaine va être désordonné :) Les deux ont des avantages et des inconvénients. Que dis-tu? – xelon
Je m'en tiens à ce que j'ai dit. Votre modèle de domaine devrait idéalement ne pas se soucier un peu de l'apparence de la base de données, les classes de domaine devraient ressembler à la façon dont vous voulez que votre code fonctionne. Mais si vous stockez les villes dans DB, je voudrais normaliser et avoir une table de ville séparée avec des ID. –