Получение наборов строк в слой презентации - PullRequest
0 голосов
/ 20 октября 2008

Мы работаем над информационной системой больницы, которая написана на C # и использует NHibernate для сопоставления объектов с базой данных. Шаблон MVC используется для отделения бизнес-логики от пользовательского интерфейса. Вот проблема,

Как получить переменный размер различного набора строк для пользовательского интерфейса?

Например, у объекта Contact есть свойство с именем City, в котором указывается, какой город живет в контакте. В стране, для которой написано приложение, более 80 городов. Как вы могли бы написать эти города в поле со списком? (или сетка данных, таблицы, ...) В этом примере фиксированный номер города. Нет необходимости добавлять еще один город в течение длительного времени. (Если список городов изменяется, перекомпиляция не является проблемой)

Например, у объекта Contact есть другое свойство с именем FooBar, которое будет содержать 1000 различных строковых значений, и эти значения будут выбраны в поле со списком для этого свойства. И этот набор может быть увеличен, если пользователи хотят. Как загрузить поле со списком с этими значениями? (Если список строк статически записан в объект комбинированного блока, перекомпиляция является проблемой)

У меня есть разные решения, как показано ниже

  1. Все строковые значения статически записываются в поле со списком в коде или конструкторе
  2. Получить значения из файла ресурсов
  3. Записать эти значения в файл XML (на самом деле то же, что и выше, но не нужно перекомпилировать)
  4. Создание объекта City и получение значений в списке из таблицы CITY с помощью NHibernate
  5. Создайте класс с именем StringHolder, который имеет свойства Type и Value. Все строковые значения (включая City и FooBar) будут записаны только в одну таблицу с именем STRINGHOLDER. И получите эти значения с помощью ключа, например "CITY" или "FOOBAR", с помощью NHibernate.

Какой бы вы выбрали? Или вы могли бы предложить мне еще один?

Спасибо всем

Ответы [ 3 ]

1 голос
/ 20 октября 2008

Я бы проголосовал за решение № 4. Вот так я всегда делал это в подобных ситуациях. Это кажется более чистым решением.

0 голосов
/ 20 октября 2008

Как вы относитесь к использованию List для списка City? Загрузите этот список строк в ваш DAL или BL, а затем передайте его в UI.

То же решение должно быть хорошо для значений FooBar.

Если у вас есть идентификаторы, связанные с City или FooBar, скажем, NY, а его числовой идентификатор в DB равен 1, тогда вы можете использовать KeyValuePair . С помощью дженериков вы можете определять, какие данные отправляются в эту KeyValuePair. Имя города или строковое значение FooBar может быть ключевым, а числовой идентификатор может быть значением.

Всего 2 цента.

0 голосов
/ 20 октября 2008

Если местоположения действительно будут использоваться для чего-либо, поместите их в базу данных. Если данные «на самом деле не используются», но для улучшения пользовательского интерфейса предусмотрен поиск городов, то вариант файла XML тоже неплохой путь.

Под "я" я имею в виду такие вещи, как , перечислите всех сотрудников в Нью-Йорке и все в таком духе. Если это «мертвые данные», просто для отображения, перейдите к решениям, которые потребуют наименьшего объема работы и наименьшего риска - что может быть опцией файла.

...