Вопрос

Я хочу использовать DDD в новом проекте и сначала смоделировать мои классы, затем сгенерируйте схему базы данных на основе библиотеки классов. Я планирую сделать это с помощью инструмента NHibernate hbm2ddl SchemaExport .

Проблема в том, что я не могу заставить работать SchemaExport из-за странной проблемы catch-22, в которую он меня помещает. Для SchemaExport требуется Объект конфигурации , для которого требуется действительный файл конфигурации NHibernate, а также набор сопоставлений базы данных.

Подвох 22 здесь в том, что когда я выполняю Configure (), он жалуется на " Не удалось определить имя таблицы для сущности 'MyEntity'; удалите атрибут 'table' или присвойте ему значение. " Таким образом, метод Configure () требует, чтобы таблица существовала, тогда как предполагается, что SchemaExport создать его на основе Configuration , которую я не могу создать, потому что таблица не существует.

Итак, как же я должен создать действительную конфигурацию NHibernate , содержащую сопоставления, необходимые для того, чтобы SchemaExport действительно делал что-то полезное, не имея Configure () бросаете и жалуетесь, что не можете найти таблицы, которые должны быть созданы с помощью SchemaExport ? Есть ли "режим"? Я могу установить объект Configuration , чтобы он не проверял базу данных на наличие заданных таблиц, или мне нужно что-то еще сделать?

Это было полезно?

Решение

Можете ли вы опубликовать свой файл конфигурации?

Я использую этот метод все время без таблиц и могу создавать схемы на лету. Я предполагаю, что у вас может быть что-то не так в одном из ваших файлов .hbm. Попробуйте сократить вашу схему до 1 таблицы, заставить ее работать, а затем создайте ее оттуда. В качестве ссылки, вот код, который я использую для генерации схемы БД:

    var cfg = new Configuration();
    cfg.Configure();
    var schema = new SchemaExport(cfg);
    schema.Create(true, true);

Это также подтолкнет скрипт к консоли для вас, чтобы вы могли увидеть, какой SQL генерируется на основе базы данных.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top