Tutorial de Castle-ActiveRecord com .NET 3.5 quebrado?
-
02-07-2019 - |
Pergunta
Alguém já tentou o ActiveRecord Amostra de introdução com C# 3.5? De alguma forma, tenho a sensação de que a amostra está completamente errada ou desatualizada. A configuração XML está simplesmente errada:
<add key="connection.connection_string" value="xxx" />
deveria estar :
<add key="hibernate.connection.connection_string" value="xxx" />
(Se eu entendi a sintaxe da configuração de Nibernato ..)
Estou me perguntando o que estou fazendo de errado. Eu recebo uma exceção "não consegui executar o ExecuteQuery para o usuário" ao ligar para a contagem () no modelo do usuário.
Não faço ideia do que isso pode ser. A fonte do tutorial difere fortemente da fonte da página (principalmente na configuração XML) e é uma amostra VS2003 com sintaxe diferente na maioria das coisas (sem genéricos etc.).
Alguma sugestão? ActiveRecord parece incrível ..
Solução
(Isso foi muito longo para um post de comentário)
@Tigraine] De seus comentários sobre minha resposta anterior, parece que o erro não está na configuração, mas com uma de suas entidades. A remoção do "hibernato" corrigiu a configuração para que ele o entregue o erro real, o que parece ser que a entidade "post" não é atribuída adequadamente ao ActiveRecord para criar seu mapeamento.
Se você mais adiante no erro que ele fornece, provavelmente terá alguns detalhes sobre o que o "post" falhou.
Algumas coisas comuns incluem:
- A classe não tem o
[ActiveRecord]
atributo. - Não há propriedade com o
[PrimaryKey]
atributo. - Não há tabela correspondente chamada "post" (ou "postagens" se
PluralizeTableNames
é verdade"). - Não há colunas correspondentes para propriedades atribuídas.
- Suas propriedades atribuídas e métodos públicos não são
virtual
(Este me mata o tempo todo).
Outras dicas
A parte do 'hibernato' da chave foi removida no Nibernate versão 2.0. Esta versão está correta para o Nibernate 2.0 em diante:
<add key="connection.connection_string" value="xxx" />
EDIT: Vejo que o Quickstart não vem com os binários de Castle e Nibernate. Você deve ter baixado os binários de algum lugar; Seria útil se você pudesse fornecer o número da versão do seu arquivo Nibernate.dll.
Confusamente, pelo menos parte do Quickstart foi atualizado para estar atual com o Nibernate (NH) 2.0, mas o mais recente lançamento de castelo 'adequado' ainda é o 1.0 RC3 (quase um ano de idade), que não inclui o NH 2.0.
Você pode percorrer dois caminhos. Você pode continuar usando o Castle RC3 e, neste caso, precisará adicionar o prefixo 'Hibernate' às suas entradas de configuração. Ou você pode baixar um construir do castelo do porta -malas, que deve estar correndo contra o NH 2.0. O problema com a última abordagem é que algumas das outras mudanças de ruptura introduzidas no NH 2.0 podem não ser corrigidas no início rápido.
Exclua o "hibernate.
"Parte para todas as entradas de configuração. Seu primeiro exemplo é o correto.