Использование 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: Диалект не поддерживает генерацию идентификационного ключа
Я подозреваю, что это будет генерировать схему только на основе созданных вами сопоставлений? Я не создал никаких отображений. Идея в том, что это будет работать против любой базы данных, к которой я подключился, для создания схемы для нее.
Вопрос: Верю ли я, что этот метод будет генерировать схему только на основе моих отображений? Если нет, правильно ли я это использую?
Надеюсь, это достаточно ясно, прокомментируйте, если мне нужно предоставить больше информации.
Заранее спасибо.
Чтобы было ясно: у меня есть база данных, и я хочу получить метаданные, представляющие базу данных, схему.