segunda-feira, 8 de fevereiro de 2010

Criando aplicações utilizando o ActiveRecord e o banco de dados integrado ao VisualStudio 2008


A tempos tenho tantado encontrar uma forma de utilizar o SQL Server Compact Edition Database, banco de dados disponibilizado de forma integrada ao VisualStudio 2008, juntamente com um framework de mapeamento ORM, como o ja comentado NHibernate. Até alguns dias atrás, sem nenhum sucesso, estive pesquisando as melhores formas de se utilizar o NHibernate e encontrei um framework chamado de ActiveRecord, que era muito falado nos sites relacionados ao NHibernate.

O ActiveRecord é um framework que utiliza o NHibernate e seu mapeamento. Ele gerencia grande parte desse processo e provê maneiras mais usuais de utilização do framework. Com ele é possível utilizar-se do mapeamento objeto-relacional sem se preocupar com as sessões do NHibernate, cada classe do modelo pode estender uma classe do ActiveRecord que possibilita uma interação mais fácil e dinâmica sobre o processo, como por exemplo, para salvar um objeto voce apenas chama o método objeto.save(), e muitas outras funcionalidade muito interessantes.

Se voce quer saber mais sobre o ActiveRecord pode acessar seu site e saber mais sobre o framework.

Voltando agora ao assunto, com a utilização do ActiveRecord, após várias tentativas de configuração, consegui criar uma aplicação que utiliza o banco de dados integrado do VisualStudio 2008 juntamente com o ActiveRecord, que por sua vez utiliza o NHibernate e faz toda a mágica de poder criar uma aplicação com um banco gerado em tempo de execução, sem que o programador tenha que se preocupar com a existência deste, com a criação de tabelas e tudo mais.

Quero então neste post mostrar como deve proceder a criação de uma aplicação que utilize o ActiveRecord juntamente com o banco integrado do VisualStudio 2008, volto a repetir o nome completo "VisualStudio 2008", pois não testei em outras versões. Assim iniciamos um novo projeto, aqui estou criando um Windows Forms, mas pode ser outro tipo de projeto:



Agora você vai precisar importar para o projeto as bibliotecas do ActiveRecord e do NHibernate, se você ainda não as possui pode baixar aqui. Dentro do pacote baixado voce vai encontrar várias Dll's, voce deve importar para o seu projeto cinco delas, a Castle.ActiveRecord.dll, log4net.dll, Nhibernate.dll, Iesi.Collections.dll e a Nhibernate.ByteCode.Castle.dll, estas são as dll's necessárias para o funcionamento básico do ActiveRecord.



Também deve ser importada a biblioteca para o funcionamento do SQL Server Compact Edition, ela se encontra dentro das Dll's do framework .NET 3.5, que é instalado juntamente com o VisualStudio 2008. Adicione então ao projeto a biblioteca System.Data.SqlServerCe.dll.



Agora seu projeto ja possui todas as bibliotecas necessárias para o funcionamento da aplicação. Temos somente que alterar a configuração para a Dll System.Data.SqlServerCe.dll, clicando sobrepode-se visualizar suas propriedades, então a propriedade "Copy Local" deve ser alterada para "True", para que quando a aplicação for compilada a Dll seja copiada para a pasta /bin/released. Isso deve ser feito pelo fato de ser esta a Dll que fornece a comunicação com o banco.



Agora deve-se criar a configuração de conexão do ActiveRecord com o banco, para isso adicionamos ao projeto um arquivo xml, que eu vou chamar de configuracao.xml, é ele que irá configurar o ActiveRecord. Este é o código de configuração que o arquivo deve conter:



Olhando o código pode-se ver onde está sendo configurado qual é o banco que será utilizado, neste caso "Data Source=teste.sdf", ou seja, o nome do banco é "teste.sdf", este não precisa ser criado no projeto pois será gerado automaticamente pelo último procedimento mostrado neste post, apenas é importante que ele seja criado com este mesmo nome.

Agora basta criarmos a classe que queremos mapear, neste exemplo, apenas como ilustração eu criei a classe Pessoa, que estende a classe ActiveRecordBase, para que seja possível o acesso aos métodos do ActiveRecord diretamente do objeto criado. Então temos a seguinte classe:



Pode-se perceber o uso dos chamados "Annotations" do ActiveRecord, que são utilizados para configurar o mapeamento da classe dentro do próprio código-fonte. Você pode aprender mais sobre isso lendo a documentação do ActiveRecord, disponibilizada em seu site.

Finalmente, agora basta criarmos a inicialização do ActiveRecord, que deve ser a primeira coisa a ser chamada no início da execução da aplicação. Eu utilizo o seguinte código, que verifica a existência do banco e se por acaso ele não existir este será criado, e inicializa as configurações do ActiveRecord. Para ser chamado antes que a aplicação inicie sua execução eu o coloquei dentro o método Load do Form.



Pronto! Nossa aplicação está pronta. Se você for até o local do projeto, dentro da pasta /bin/debug/ , você pode visualizar o banco criado. Com a ajuda do SQL Server Management Studio pode-se visualizar as tabelas criadas e o conteúdo de cada uma delas.

Agora podemos criar aplicações sem se preocupar com o banco que estaremos utilizando na maquina que irá executar a aplicação, basta apenas ter instalado o framework .NET 3.5 que a aplicação funcionará perfeitamete.

ps: Não é recomendado utilizar este banco quando um número muito grande de registros (mais que 100.000 por tabela) for previsto, para isso deve-se utilizar os bancos convencionais, eu indico o SQL Server 2008.Até o próximo Post.

Nenhum comentário:

Postar um comentário