Одна модель для управления всеми — VS2010 UML, модель данных сущностей ADO.NET и T4

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

Было много первоначальных инвестиций, но они принесли большие дивиденды за время существования проекта с 15 разработчиками и 3 годами.

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

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


person Eric J.    schedule 01.06.2010    source источник


Ответы (3)


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

person Oleg Sych    schedule 02.06.2010

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

person Mike Hanson    schedule 02.06.2010
comment
Мы довольно успешно справились с проектом, на который я ссылаюсь, имея единственный источник правды в модели UML. Конечно, стратегия генерации кода должна была быть гибкой (различные стереотипы и помеченные значения (вещь Enterprise Architect, которую я не вижу в MS UML) могли управлять разными стратегиями генерации, и нам нужно было оставить место для принятия решений вручную. Мы так и сделали. по-прежнему имеют отдельную физическую модель данных, но логическую модель данных (эквивалент EDM) можно увидеть в модели UML.Тем не менее, хорошо, что миры очень разные. - person Eric J.; 02.06.2010
comment
Пока он может видеть версию модели данных и общаться с этой точкой интерфейса, тогда да, подход UML должен работать (при условии, что вы хотите поместить столько информации в свои диаграммы UML). - person Mike Hanson; 03.06.2010

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

person Craig Stuntz    schedule 02.06.2010