Полиморфизм с запросом к базе данных - PullRequest
0 голосов
/ 09 июня 2009

Я занимаюсь разработкой информационной панели для отображения корпоративных показателей (в настоящее время с ASP.net 3.5 в C #) и ищу советы по дизайну. Я не так привык к ООП в веб-приложениях.

Может быть много разных показателей, которые могут видеть разные пользователи в отношении «многие ко многим». Я храню пользователей в локальной базе данных SQL, и, конечно, имеет смысл хранить метаданные для каждой «Метрики». Это также обеспечивает своего рода список контроля доступа для каждого. Каждая метрика может иметь несколько разных диаграмм, имеющих разный дизайн (столбцы, столбцы, круговые диаграммы, линии или комбинации из них с разными сериями на разных осях Y и т. Д.).

Эти диаграммы могут быть разработаны программно, а затем добавлены на страницу ASP.net во время выполнения. Было бы неплохо иметь структуру наследования суперкласса пустых диаграмм и различных типов диаграмм, которые расширяют это.

На странице будут выбраны графики, которые данный пользователь имеет право просматривать, а затем сгенерированы те. Тем не менее, я вижу какой-то большой оператор switch в виде грубой таблицы поиска для соответствующего подкласса, который создается на основе информации, выбранной в базе данных.

Есть ли более художественный способ сделать это? Каким-то образом предоставить объявление типа во время выполнения? Должен ли я перенести всю информацию о стилях диаграмм в базу данных и иметь дополнительные таблицы и столбцы для рядов, точек данных, цветов и т. Д., Где один класс диаграммы выполняет все необходимые запросы и создает диаграмму? Спасибо.

Ответы [ 2 ]

1 голос
/ 24 июня 2009

Я понял, что то, что я ищу, можно решить с помощью динамической загрузки классов. Вот замечательный пример динамической загрузки классов в C # здесь от Michael Clarke.

По сути, я могу загрузить класс на основе строкового имени файла, полученного из запроса.

0 голосов
/ 09 июня 2009

Вы можете сохранить строгое имя класса в БД, а затем просто создать экземпляр класса.

Так что вместо сортировки по столбчатой ​​диаграмме вы можете сохранить что-то вроде

YourNamespace.UI.Charts.Bar

Лично я бы не боялся просто хранить тип диаграммы, поскольку он предоставляет вам слой абстракции, который может быть полезен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...