Какие платформы ORM будут создавать и выполнять SQL DDL для вас?

Entity Framework Code First создаст для вас базу данных, если она не существует, и структурирует ее на основе ваших объектов сопоставления. Я считаю, что Roundhouse будет делать то же самое с файлами Fluent Mapping, используя NHibernate.

Существуют ли другие ORM (или такие инструменты, как Roundhouse), которые позаботятся обо всем создании и выполнении SQL DDL?

2 ответа

NHibernate не нуждается в Fluent Mappings для генерации схемы базы данных. Эта функция встроена в ядро ​​NHibernate:

new SchemaExport(_configuration).Execute(false, true, false);

Однако, по моему опыту, это в основном полезно для интеграционных тестов в памяти или начальных развертываний. Производственные базы данных должны быть обновлены. Если вы останетесь без дела, то вам нужно будет добавлять и удалять столбцы, таблицы и внешние ключи, не влияя на данные. В этом есть аспект преемственности и управления версиями. NHibernate знает только ваше текущее отображение. Например, он не знает, что 2 месяца назад вы сохранили имя и фамилию вашего клиента в столбце с именем "CustomerName", а затем решили разделить его на два столбца "FirstName" и "LastName" (что, вероятно, является наиболее примитивным изменением, которое может быть сделано). Задача NHibernate состоит в том, чтобы отобразить вашу текущую схему на объекты, а не помнить варианты моделирования данных, сделанные несколько лет назад.

По моему опыту, нет волшебного инструмента, который будет писать сценарии обновления, они должны быть написаны вручную или, по крайней мере, проверены разработчиком. Инструменты могут предоставить вам среду для выполнения этих сценариев, например, RoundhouseE. У Скотта Аллена есть отличная серия о подходе "только вперед, один раз".

Hibernate делает, если вы установите hbm2ddl.auto в create или же create-drop или же update в конфигурационном файле. Используя Java, я предполагаю, что то же самое для nHibernate.

Если ORM не выполняет ddl, нет особого смысла иметь его, по крайней мере, его ключевая особенность. По моему мнению.

Другие вопросы по тегам