Возможно ли сгенерировать схему базы данных из nHibernate, где я предоставил nHibernate конфигурацию в базу данных, но я не написал никаких сопоставлений.Использование nHibernate для извлечения схемы базы данных
Я хочу программно получить метаданные/схемы базы данных.
Я использую базу данных Oracle. Я попробовал два подхода:
Подход один:
public DatabaseMetadata GetMetadata(DbConnection connectionIn)
{
return new DatabaseMetadata(connectionIn, _dialect);
}
Проблема: Это, кажется, что мне нужно, однако, хотя он правильно соединяет, он не подобрал какую-либо из мои таблицы. Все, что я предоставил, это объект конфигурации nHibernate, который был заполнен содержимым моего файла nHibernate.xml.config (строка подключения, клиент драйвера и т. Д.).
Вопрос: Зачем ему не возвращать данные таблицы? Он подключен правильно, но ничего не находит!
подход два:
public void DatabaseSchema()
{
var schema = new SchemaExport(nHibernateConfiguration);
schema.SetOutputFile("schema.dll");
schema.Create(true, true);
}
nHibernateConfiguration является экземпляром (имущество от класса) объекта конфигурации NHibernate, заселенный с содержимым из класса nHibernate.xml.config.
Задача: Это просто не работает. Сбои со следующим исключением:
NHibernate.MappingException: Диалект не поддерживает идентификационную ключ поколения
Я подозреваю, что это будет только генерировать схему на основе отображений вы создали? Я не создал сопоставлений. Идея заключается в том, что это будет работать против той базы данных, к которой я подключился, для создания схемы для нее.
Вопрос: ли мое убеждение, что этот метод будет только генерировать схему, основанную на моих отображений? Если нет, правильно ли я использую его?
Надеюсь, это достаточно ясно, комментарий, если мне нужно предоставить дополнительную информацию.
Спасибо заранее.
Чтобы быть ясным: у меня есть база данных и вы хотите получить метаданные, представляющие базу данных, схему.
Если в его базе данных есть только несколько полей, я бы согласился отобразить все вручную. В противном случае возьмите инструмент, чтобы, по крайней мере, генерировать правильные имена и сопоставление членов. Поскольку большинство инструментов, похоже, имеют проблемы с созданием FK (или его база данных может не использовать их, если они устарели) и типы отношений, он может просто установить их вручную. – Mike
Cheers. Это помогло мне разобраться в сути проблемы. – Damien
llbgen - это программа с функцией автоматического создания сопоставления :) – harry180