Сохранение специальной модели в таблицу - PullRequest
1 голос
/ 05 сентября 2011

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

Новая модель будет затем повторно использована и ассоциирована со многими документами, поэтому она не будет использоваться один раз.

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

Это не случится (каждый) день. На самом деле, я думаю, можно с уверенностью сказать, что это исключение из правил.

Тем не менее, нам все еще нужно обслужить это, сохранить данные в таблицу и представить данные и ввод данных на экране.

Я подумал о том, чтобы просто сериализовать модель в таблицу, а данные - в другую таблицу.

Кто-нибудь на самом деле сделал это, и вы бы хотели поделиться своим решением?

редактировать

Это будет решение WPF, а не веб-решение.

1 Ответ

0 голосов
/ 05 сентября 2011

Для меня очевидным решением является использование XML - это идеальный инструмент для этого сценария.

  • Пользователь может определить форму с помощью какого-либо инструмента пользовательского интерфейса, который вы напишите.
  • Вы анализируете эту запись для генерации некоторого структурированного XML (или XSD); ты определишь
    • Имена полей,
    • Типы данных,
    • Разрешенные вложенные значения / ссылки на другие данные
    • Enum / «выпадающие» значения и т. Д.

Оттуда вопрос хранения файла определения и его использования.

  • XML-документ хранится в вашей базе данных с версией, датой или идентификатором пользователя
  • Код, который отображает форму ввода данных, извлечет соответствующий XML-документ (самый последний?) Из вашей базы данных
  • Форма генерируется динамически (известны имена полей, типы данных и т. Д.)
  • Любые данные, введенные в эту динамически генерируемую форму, будут проверены на соответствие вашему структурированному XML.
  • Все экземпляры ввода данных будут сохранены со ссылкой на этот документ XSD.

Это гарантирует, что вы сможете правильно идентифицировать каждый «экземпляр ввода данных» (набор значений) по его соответствующей «форме ввода данных» (определение формы XML)

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

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