У меня есть ситуация, когда у меня есть куча строк в базе данных. Например, допустим, у нас есть таблица с именем ReportRendererType.
Строки могут быть:
- Линейный график
- Гистограмма
- Сетка
и т.д.
Я могу использовать базу данных для хранения того, как определенные пользователи хотят просматривать определенные отчеты. Например. Фрэнку нравится отчет о прибыли, отображаемый в виде гистограммы. Было бы замечательно, если бы я мог связать код с записью в БД. Другими словами, было бы здорово, если бы класс LineGraphRenderer знал, что он связан со строкой 1 в таблице ReportRenderType. Один из тривиальных примеров того, почему это было бы полезно, состоит в том, что вы можете заполнить раскрывающийся список параметров ReportRenderType, а затем выбрать значение, и класс Manager может легко выяснить, как отобразить отчет, учитывая значение, выбранное из раскрывающегося списка. Тогда возникает вопрос - как сделать связь между БД и этим фрагментом кода?
Есть много вариантов:
A. Когда вы создаете класс LineGraphRenderer, у вас может быть свойство ReportRendererType, которое возвращает первичный ключ связанной строки.
B. Вы можете сделать так, чтобы LineGraphRenderer возвращал перечисление, которое имело значение первичного ключа (C # позволяет вам сделать это, явно устанавливая значение хеш-кода), это дает статическую типизацию и единое местоположение для всех записей БД.
C. У LineGraphRenderer может быть свойство ReportRendererType, которое возвращает первичный ключ, но извлекает значение для связанной строки из файла настроек. Это облегчит создание ассоциаций, особенно если кто-то другой имеет разные значения первичного ключа. Например, компания A может хранить LineGraph в строке 1, а компания B может хранить LineGraph в строке 2.
К сожалению, все эти способы также имеют недостатки. Мне интересно, как эта проблема решалась другими, и нашли ли они какие-то отличные способы сделать то, чего мне не хватает.