quinta-feira, 14 de agosto de 2008

Configurando o Castle ActiveRecord em aplicações web

Configurar o Castle ActiveRecord em aplicações web é uma tarefa fácil. Porém, as documentações oficiais sobre isso são um pouco confusas. Neste post pretendo mostrar da forma mais simples possível como fazer uma configuração básica do Castle ActiveRecord.

Primeiro Passo - Instale os assemblies no computador de desenvolvimento

O site oficial do Castle ActiveRecord disponibiliza um instalador que registra os assemblies em seu computador de desenvolvimento, isso facilita na hora de referenciar no seu projeto, os assemblies aparecerão entre as referências do .Net na janela Add Reference do Visual Studio.
Se você preferir, pode apenas baixar e copiar os Assemblies para seu computador.
Página de download do site oficial

Segundo Passo - Adicione as referências ao seu projeto

Adicione as seguintes referências, elas vêm no pacote baixado do site oficial.

  • Castle.ActiveRecord.dll
  • NHibernate.dll

Se você usou o instalador para instalar os assemblies, eles estarão na aba .Net da janela Add Reference do Visual Studio. Caso contrário, procure-os manualmente.

Terceiro Passo - Configure o web.config

Para SQL server, o web.config deverá ficar assim:

















Para o Oracle, deverá ficar assim:


















Quarto Passo - Inicialização do Framework no global.asax

Por fim, é necessário codificar a inicialização do Castle ActiveRecord, que deverá acontecer somente na inicialização da aplicação web. Para isso, devemos chamar o método Initialize da classe ActiveRecordStarter, passando as configurações que guardamos no web.config e todos os tipos que criamos que extendem a classe ActiveRecordBase. Ex:


Sub Session_Start(ByVal sender As Object, ByVal e As EventArgs)
' Fires when the session is started
Dim _Config As Castle.ActiveRecord.Framework.IConfigurationSource
_Config = System.Configuration.ConfigurationManager.GetSection("activerecord")
Castle.ActiveRecord.ActiveRecordStarter.Initialize(_Config, _
GetType(Blog), _
GetType(Post) _
)
End Sub

Caso você não possa modificar o código do global.asax (se você está usando DotNetNuke, por exemplo), você pode fazer a inicialização em um HttpModule. Porém, como a inicialização de um HttpModule não acontece sempre quando a aplicação web inicializa (as vezes um HttpModule é inicializado mais de uma vez), você deverá usar um work-around: crie uma classe com o código da inicialização em seu contrutor estático e, no evento Init do HttpModule, apenas chame um método qualquer da classe onde está a inicialização (não precisa ter nenhum código neste método). Em breve postarei sobre esta técnica com mais detalhes.

Nenhum comentário: