Вопрос

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

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

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

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

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

<Ол>
  • Все строковые значения статически записываются в поле со списком в коде или конструкторе
  • Получить значения из файла ресурсов
  • Запишите эти значения в файл XML (на самом деле то же, что и выше, но не нужно перекомпилировать)
  • Создайте объект StringHolder и получите значения в список из таблицы Type с помощью NHibernate
  • Создайте класс с именем Value, который имеет свойство STRINGHOLDER и <=>. Все строковые значения (включая <=> и <=>) будут записаны только в одну таблицу с именем <=>. И получите эти значения с помощью ключа типа & Quot; CITY & Quot; или " FOOBAR " с NHibernate.
  • Какой из них вы бы выбрали? Или вы могли бы предложить мне еще один?

    Спасибо всем

    Это было полезно?

    Решение

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

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

    Другие советы

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

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

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

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

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

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top