NHibernate SchemaExport и Configure() catch-22
Я хочу использовать DDD в новом проекте и сначала смоделировать мои классы, а затем сгенерировать схему базы данных на основе библиотеки классов. Я планирую сделать это с помощью инструмента NHibernate hbm2ddl SchemaExport
,
Проблема в том, что я не могу получить SchemaExport
работать из-за странной проблемы с уловкой-22, это ставит меня в тупик. SchemaExport
требует Configuration
объект, который сам по себе требует корректный файл конфигурации NHibernate, а также набор сопоставлений базы данных.
Подвох-22 здесь в том, что когда я делаю Configure(), он жалуется "Could not determine the name of the table for entity 'MyEntity'; remove the 'table' attribute or assign a value to it."
Итак Configure()
метод требует, чтобы таблица существовала, а SchemaExport
должен создать его на основе Configuration
что я не могу создать, потому что таблицы не существует.
Итак, как же я должен создать действительный NHibernate Configuration
содержащие сопоставления, необходимые для SchemaExport
на самом деле сделать что-то полезное, не имея Configure()
бросить и пожаловаться, что он не может найти таблицы, которые должны быть созданы с SchemaExport
? Есть ли "режим", который я могу установить Configuration
объект, поэтому он не будет проверять базу данных на наличие данных таблиц, или мне нужно что-то еще сделать?
1 ответ
Можете ли вы опубликовать свой файл конфигурации?
Я использую этот метод все время без каких-либо таблиц и могу генерировать схему на лету. Я предполагаю, что у вас может быть что-то не так в одном из ваших файлов.hbm. Попробуйте сократить вашу схему до 1 таблицы, заставить ее работать, а затем создайте ее оттуда. В качестве ссылки, вот код, который я использую для генерации схемы БД:
var cfg = new Configuration();
cfg.Configure();
var schema = new SchemaExport(cfg);
schema.Create(true, true);
Это также подтолкнет сценарий к консоли для вас, чтобы вы могли видеть, какой SQL генерируется на основе базы данных.