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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top