Obtener conjuntos de cadenas en la capa de presentación
-
03-07-2019 - |
Pregunta
Estamos trabajando en un sistema de información hospitalaria que se está escribiendo en C# y utilizando NHibernate para asignar objetos a la base de datos.El patrón MVC se utiliza para separar la lógica empresarial de la interfaz de usuario.Aquí está el problema,
¿Cómo se obtiene un conjunto diferente de cadenas de tamaño variable en la interfaz de usuario?
Por ejemplo un Contact
objeto tiene una propiedad llamada City
que sostiene en qué ciudad vive el contacto.El país para el que está escrita la aplicación tiene más de 80 ciudades.¿Cómo podrías escribir esas ciudades en un cuadro combinado?(o una cuadrícula de datos, tablas, ...) En este ejemplo, el número de ciudad es fijo.No será necesario añadir otra ciudad durante mucho tiempo.(Si la lista de ciudades cambia, volver a compilarla no es un problema)
Por ejemplo un Contact
objeto tiene otra propiedad llamada FooBar
que contendrá 1000 valores de cadena diferentes y estos valores se seleccionarán de un cuadro combinado para esa propiedad.Y este conjunto se puede ampliar si los usuarios así lo desean.¿Cómo se carga el cuadro combinado con estos valores?(Si la lista de cadenas se escribe estáticamente en un objeto de cuadro combinado, la recompilación es un problema)
Tengo diferentes soluciones como se muestra a continuación.
- Todos los valores de cadena escritos estáticamente en un cuadro combinado en código o diseñador
- Obtener los valores de un archivo de recursos
- Escriba esos valores en un archivo XML (en realidad, igual que el anterior, pero no es necesario volver a compilarlo)
- Hacer una
City
objeto y obtener los valores en una lista deCITY
mesa con NHibernate - Haz una clase llamada
StringHolder
que tiene unType
yValue
propiedad.Todos los valores de cadena (incluidosCity
yFooBar
) se escribiría en una sola tabla llamadaSTRINGHOLDER
.Y obtenga esos valores con una clave como "CITY" o "FOOBAR" con NHibernate.
¿Cuál elegirías?¿O podrías sugerirme otro?
Gracias a todos
Solución
Si las ubicaciones realmente se van a utilizar para algo, introdúzcalas en la base de datos. Si los datos & Quot; no se usan realmente & Quot ;, pero se proporciona la búsqueda de ciudades para mejorar la interfaz de usuario, entonces la opción de archivo XML tampoco es una mala opción.
Por usado, me refiero a cosas como enumerar todos los empleados en Nueva York y cosas así. Si es & Quot; datos muertos & Quot ;, solo para mostrar, busque las soluciones que requerirán la menor cantidad de trabajo y el menor riesgo, que podría ser la opción de archivo.
Otros consejos
Yo votaría por la solución # 4. Así es como siempre lo he hecho en situaciones similares. Simplemente parece una solución más limpia.
¿Cómo se siente al usar List < string > para una lista de la ciudad? Cargue esta lista de cadenas en su DAL o BL y luego páselo a la interfaz de usuario.
La misma solución también debería ser buena para los valores de FooBar.
En caso de que tenga ID asociados con City o FooBar, digamos NY y su ID numérica en DB es 1, entonces puede usar KeyValuePair < TKey, TValue > ;. Con los genéricos puede dictar qué datos van en este KeyValuePair. El nombre de la ciudad o el valor de cadena de FooBar pueden ser clave y la ID numérica puede ser un valor.
Solo 2 centavos.