NHibernate SchemaExport e Configurar () pega-22
-
06-07-2019 - |
Pergunta
Eu quero usar DDD em um novo projeto e modelar minhas aulas em primeiro lugar, em seguida, gerar o esquema de banco de dados baseado na biblioteca de classes. Meu plano é fazer isso com o NHibernate hbm2ddl SchemaExport
ferramenta.
O problema é que eu não posso começar a SchemaExport
ao trabalho por causa de um catch-22 problema estranho que me coloca em. O SchemaExport
requer um objeto Configuration
que se requer um arquivo de configuração do NHibernate válido, bem como um conjunto de banco de dados mapeamentos.
O catch-22 aqui é que quando eu faço o Configure (), ele reclama "Could not determine the name of the table for entity 'MyEntity'; remove the 'table' attribute or assign a value to it."
Assim, o método Configure()
requer a mesa de existir, enquanto o SchemaExport
é suposto para criá-la com base na Configuration
que eu não posso criar porque a tabela não é não existe.
Assim, como na terra que eu deveria criar um Configuration
NHibernate válido, contendo os mapeamentos necessários para SchemaExport
para realmente fazer algo útil, sem ter lance Configure()
e se queixam de que ele não pode encontrar as tabelas que estão a ser criado com SchemaExport
? Existe um "modo" Eu posso definir o objeto Configuration
na forma que ele não irá verificar o banco de dados para a existência de tabelas de dados, ou há alguma outra coisa que eu preciso fazer?
Solução
Você pode postar seu arquivo de configuração?
Eu uso este método o tempo todo sem tabelas presente, e sou capaz de gerar o esquema na mosca. Meu palpite é que você pode ter algo fora em um dos seus arquivos .hbm. Tente cortar seu esquema para 1 mesa, fazê-la funcionar, então construí-lo a partir daí. Como referência, aqui está o código que eu uso para gerar o esquema db:
var cfg = new Configuration();
cfg.Configure();
var schema = new SchemaExport(cfg);
schema.Create(true, true);
Isso também vai empurrar o script para o console para você, para que você possa ver o que SQL é gerado contra o db.