Usando o nHibernate para recuperar o esquema do banco de dados
É possível gerar um esquema de um banco de dados a partir do nHibernate, onde forneci ao nHibernate a configuração do banco de dados, mas não escrevi nenhum mapeamento.
Desejo obter o MetaData / Esquema do Banco de Dados programaticamente.
Estou usando um banco de dados Oracle. Eu tentei duas abordagens:
Abordagem um:
public DatabaseMetadata GetMetadata(DbConnection connectionIn)
{
return new DatabaseMetadata(connectionIn, _dialect);
}
Problema: No entanto, parece ser o que eu preciso, embora ele se conecte corretamente, não pegou nenhuma das minhas tabelas. Tudo o que forneci foi o objeto de configuração nHibernate, que foi preenchido com o conteúdo do meu arquivo nHibernate.xml.config (cadeia de conexão, driver cliente, etc.).
Pergunta, questão: Por que não retornaria os dados da tabela? Ele está conectado corretamente, mas não encontra nada!
Abordagem dois:
public void DatabaseSchema()
{
var schema = new SchemaExport(nHibernateConfiguration);
schema.SetOutputFile("schema.dll");
schema.Create(true, true);
}
nHibernateConfiguration é uma instância (propriedade na classe) do objeto nHibernate Configuration, preenchida com conteúdo da classe nHibernate.xml.config.
Problema: Isso simplesmente não funciona. Falha com a seguinte exceção:
NHibernate.MappingException: Dialect não suporta geração de chave de identidade
Eu suspeito que isso só irá gerar um esquema com base nos mapeamentos que você criou? Eu não criei nenhum mapeamento. A idéia é que isso funcione em qualquer banco de dados que eu tenha conectado para gerar um esquema para ele.
Pergunta, questão: É minha convicção que este método irá gerar apenas um esquema baseado em meus mapeamentos? Caso contrário, estou usando corretamente?
Espero que isso seja claro o suficiente, comente se eu precisar fornecer mais informações.
Desde já, obrigado.
Para ser claro: eu tenho um banco de dados e quero obter metadados representando o banco de dados, um esquema.