Отображение данных в таблице в перечисляемый объект XSD или CLR - PullRequest
0 голосов
/ 24 мая 2011

В настоящее время я использую стандартное приложение 4.0 Web Forms (без динамических данных), и я хотел бы попытаться сделать конфигурацию своего сайта максимально динамичной.

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

В настоящее время у меня есть коллекция записей в разделе конфигурации в моем файле web.configкоторый представляет собой коллекцию типов файлов.Поэтому, возможно, у меня будет что-то вроде <add key="Pdf"> в разделе типов файлов, если я хочу работать с файлами PDF.

Каждый из этих ключей имеет запись в моей базе данных, и я использую перечисление длясопоставить дружественное имя / объект CLR со значением базы данных (целое число).Мне нравится, как я могу легко использовать это в атрибуте тега, например, <cc1:MyControl FileType="Pdf">, и я могу использовать комбинацию данных базы данных и дополнительных атрибутов из web.config, чтобы позволить Intellisense действительно делать свое дело.

Проблема в том, что это перечисление в настоящее время жестко запрограммировано, и я не знаю хорошего способа сделать это динамическим для обработки будущих добавлений или удалений.На самом деле, если я хочу добавить новый тип файла, мне нужно будет добавить новую строку в базу данных, добавить запись для нее в web.config, а затем обновить перечисление с новым идентификатором.Это нормально для меня, но это немного ручная работа, и я не могу говорить о способности нашей поддержки следовать этой процедуре.

Я думаю, что концептуально для меня является препятствием, потому что вместопереводя схему DB в схему CLR, я на самом деле пытаюсь преобразовать конгломерат экземпляров объекта схемы в один тип.

Я использую платформу сущностей, поэтому использование чего-то там не является проблемой.

Я подумывал об использовании xsd.exe, но, поскольку я не заинтересован в планировании его запуска или вызове его для обновления схемы, иметь других разработчиков, возможно, более громоздко, чем просто обновить enum вручную.Однако, если есть что-то, что я могу сделать по этому маршруту, я более чем готов проверить это.

Чтобы уточнить, я не особо зациклен на наличии этого в web.config, это просто, как я это сделалчтобы заставить его работать красиво и красиво, как в жестком коде.

В идеале, я хотел бы, чтобы данные, которые берутся из базы данных, автоматически анализировались и / или распознавались, где яможно просто поместить его имя или представление на простом английском языке в свойстве тега.Я думаю, что это, скорее всего, будет выглядеть как какой-то XML-файл схемы, на который ссылается клиент.

Если у вас есть какие-либо предложения, я был бы очень признателен.Спасибо, ребята.

1 Ответ

0 голосов
/ 28 мая 2011

Я закончил тем, что отошел от web.config.Я мог бы сделать свое собственное преобразование, но я решил вместо этого использовать шаблон T4.Я переместил данные, которые были сохранены в web.config, в поля базы данных, а затем использовал шаблон T4 для запроса к БД, получения всех строк и генерирования для них перечисляемых значений.Затем я создал неявные операторы для преобразования перечислимого типа в сущность и наоборот, например, get{ return context.Where(myVar => myVar.myKey == (int) myEnumVal);

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

...