Генерация классов из схемы базы данных - PullRequest
1 голос
/ 19 августа 2009

Я копался в ранее заданных вопросах и не смог найти дубликат. Я хотел бы генерировать базовые классы сущностей в .Net из схемы DB2 (с использованием поставщика OLEDB iSeries). Есть ли простой способ сделать это? Я посмотрел на MyGeneration и CodeSmith, и кажется, что должен быть более простой способ.

Заранее спасибо.

EDIT Я снимаю с этого тег iSeries в надежде, что он немного лишит его понимания. У кого-нибудь есть что-то, что они использовали против любого поставщика ADO.Net или OLEDB? Я думаю, что смогу адаптировать его для работы с iSeries.

РЕДАКТИРОВАТЬ # 2 Снова добавив тег iSeries, я приму мой собственный ответ через пару дней, надеюсь, это поможет кому-то в будущем. +1 респондентам, спасибо.

Ответы [ 3 ]

2 голосов
/ 19 августа 2009

Вы пробовали Дживса? Это генератор кода на основе шаблонов, написанный на Perl.

С Jeeves вы можете модифицировать анализатор спецификаций и шаблоны по отдельности, а также вводить команды Perl в шаблон.

Я не сделал то, что вы хотите, но я сделал следующее:

1) Использовал распределяемый OO-анализатор Дживса и создал определения моего объекта в файле спецификации, который находится в формате, который может прочитать этот анализатор. 2) Я запрограммировал шаблон для использования абстрактного синтаксического дерева, созданного анализатором OO из моего файла спецификации. 3) Это, в свою очередь, генерирует генератор кода в Perl. Я назвал этот генератор кода предварительным событием (в VS 2005), и сгенерированный код был скомпилирован прямо сейчас.

Вам нужно будет создать нужный шаблон (и, возможно, анализатор спецификаций), но как только вы это сделаете, вы сможете вывести именно то, что вам нужно, без больших дополнительных затрат.

1 голос
/ 19 августа 2009

Возможно, это немного затянуто, но одним из способов является обратное преобразование схемы в диаграмму моделирования ролей объектов с использованием плагина NORMA VS , а затем генерирование классов .NET с помощью генератора PLiX, который поставляется с плагином.

Вы можете обнаружить, что полученные классы украшены дополнительными членами, которые вам могут не понадобиться (они закодированы, чтобы при необходимости их можно было использовать в контексте модели компонента), но вы можете достаточно легко удалить эти дополнительные артефакты.

0 голосов
/ 19 августа 2009

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

//Enumerate schema tables (excludes views)
select table_name from qsys2.tables where table_schema = 'schema_name' and table_type = 'BASE TABLE'

//Enumerate table columns
select * from qsys2.columns where table_schema = 'schema_name' and table_name = 'table_name' order by ordinal_position;

Может быть, это поможет кому-то в будущем.

...