Одна модель для управления ими - VS2010 UML, модель данных сущностей ADO.NET и T4 - PullRequest
1 голос
/ 02 июня 2010

Некоторое время назад я работал над довольно крупным проектом, где мы смоделировали классы в Enterprise Architect и сгенерировали (частичные) классы POCO (в комплекте с проверками бизнес-правил на основе моделей), постоянство (отображение NHibernate файл) и DDL. На основании определенных атрибутов модели мы можем пометить альтернативные стратегии генерации или указать, что конкретная часть будет полностью закодирована вручную.

Первоначальных инвестиций было много, но они принесли большие дивиденды в течение срока жизни 15-летнего девелоперского проекта.

Я занимаюсь расследованием того же, что и нынешний стек технологий Microsoft. Я застрял в том, что моделирование классов выполняется с помощью инструментов UML VS 2010, а логическое моделирование данных - с помощью Entity Data Modeler.

Разумно ли использовать VS 2010 UML в качестве «единого источника правды», а код генерирует файлы edmx на основе модели классов? Это обратный путь общего создания модели сущностей и использования генератора POCO для генерации классов. Однако хорошая модель класса может использоваться для генерации гораздо большего, чем просто свойства, поэтому я склонен рассматривать ее как лучший выбор, чем модель сущностей.

Ответы [ 3 ]

1 голос
/ 02 июня 2010

Entity Data Modeler ограничен одной диаграммой на модель и становится непригодным для использования в нетривиальных сценариях. Вы можете использовать профили UML для расширения моделей классов для логического моделирования данных . Это требует значительных затрат сил и времени, что может быть оправдано для трехлетнего проекта с 15 разработчиками.

1 голос
/ 02 июня 2010

Да, это возможно. Нет, ничего не встроено. Для этого вам нужно написать VSIX , который будет использовать модель и генерировать EDMX / код. Это не обязательно сложно, но вы должны сделать это сами. Вам также понадобится шаблон или атрибуты для обработки аспектов моделирования, которых у вас может не быть в ваших диаграммах, так же, как вы должны указывать ключевые поля и т. П. При выполнении моделирования в коде.

1 голос
/ 02 июня 2010

Это всегда будет проблемой, так как каждый слой моделирования отображает два разных мира. Чтобы полностью знать код, ваша система генерации должна иметь доступ ко всем моделям отображения. Итак, вы не можете просто объявить один «мастером», поскольку каждый слой является «реальной» перспективой решения.

...