Facilitando o desenvolvimento DAL com SubSonic

O SubSonic é uma tecnologia open source que cria toda a camada de acesso a dados (DAL – Data Access Layer) de nosso projeto em .NET e que tem como líder Rob Conery.

Ele cria toda nossa camada de acesso a dados (DAL) em tempo de compilação, ficando somente em nossa responsabilidade utilizá-lo.

Atualmente ele suporta quase todos os bancos de dados do mercado como:

  • SQL Server 2000 or 2005
  • MySQL
  • Oracle

Para utiliza-lo em nossos projetos, basta acessar o link e fazer o download:

Sempre que um novo objeto é adicionado ou excluído é necessário recompilar nossa aplicação para ter acesso a ele no código fonte.

Para que você entenda bem seu funcionamento, vamos a prática.

Inicie um novo projeto ASP.NET Web Site.


usandosubsonic01

Adicione a referência ao SubSonic que se encontra no diretório da C:\Program Files\SubSonic\SubSonic 2.1 Final (no meu caso a versão do SubSonic é 2.1 Final).

Foi criado em nosso projeto do diretório Bin (diretório das Referencias adicionadas ao projeto) com o SubSonic e todas as demais referencias que ele precisa. Veja a imagem abaixo:


usandosubsonic02

Agora criaremos o diretório App_Code e adicionaremos um arquivo com extensão abp no mesmo com o nome de subsonic.abp.


usandosubsonic03


usandosubsonic04


usandosubsonic05

Esse arquivo será utilizado pelo SubSonic como arquivo temporário para gerar o código DAL no momento da compilação.

Abra o Web.config para realizarmos a configuração necessárias.

Adicionaremos o configSections…


  <configsections>
    <section name="SubSonicService" type="SubSonic.SubSonicSection, SubSonic" requirePermission="false"/>
  </configsections>

… a ConnectionString …


<connectionstrings>
  <add name="ArtigoSubSonic" connectionString="server=localhost;database=artigo_subsonic;uid=root;pwd=123456;"/>
</connectionstrings>

… adicione também o Provider do SubSonic, no meu caso utilizarei o SubSonic.MySqlDataProvider para utilizar o banco de dados MySql, caso queira utilizar SQL Server use o SubSonic.SqlDataProvider…


  <subsonicservice defaultProvider="Artigo_SubSonic">
    <providers>
      <clear />
      <add name="Artigo_SubSonic" type="SubSonic.MySqlDataProvider, SubSonic" connectionStringName="Artigo_SubSonic" generatedNamespace="Artigo_SubSonic"/>
    </providers>
  </subsonicservice>

… e por fim o BuildProvider.


    <compilation debug="true" defaultLanguage="C#">
      <buildproviders>
        <add extension=".abp" type="SubSonic.BuildProvider, SubSonic"/>
      </buildproviders>
    </compilation>

Seu Web.Config deverá ficar parecido com o meu.


< ?xml version="1.0"?>
<configuration>
  <configsections>
    <section name="SubSonicService" type="SubSonic.SubSonicSection, SubSonic" requirePermission="false"/>
  </configsections>
  <appsettings />
  <connectionstrings>
    <add name="ArtigoSubSonic" connectionString="server=localhost;database=artigo_subsonic;uid=root;pwd=123456;"/>
  </connectionstrings>
  <subsonicservice defaultProvider="ArtigoSubSonic">
    <providers>
      <clear />
      <add name="ArtigoSubSonic" type="SubSonic.MySqlDataProvider, SubSonic" connectionStringName="ArtigoSubSonic" generatedNamespace="ArtigoSubSonic"/>
    </providers>
  </subsonicservice>
  <system .web>
    <compilation debug="true" defaultLanguage="C#">
      <buildproviders>
        <add extension=".abp" type="SubSonic.BuildProvider, SubSonic"/>
      </buildproviders>
    </compilation>
    <authentication mode="Windows" />
  </system>
</configuration>

Se quiser, pode configurar um banco de dados que você já tenha criado, acredito que será muito mais interessante e assim poderá fazer um comparativo do tempo de desenvolvimento.

Até aqui não gastamos muito tempo para configurar e isso não será diferente para desenvolver.

Antes de começarmos a codificar, vamos dar um Build em nosso projeto apertando F6 para que o SubSonic crie a DAL do nosso projeto e agora sim criaremos nosso SELECT e preencher o GridView com as informações.

Adicione a namespace de referencia ao SubSonic e a nossa DAL no CodeBehind


using ArtigoSubSonic;
using SubSonic;
using System.Data;

ArtigoSubSonic é o nome da namespace que definimos no nosso Web.Config

Em nossa página Default.aspx adicione um GridView e vá ao fonte para adicionar um código no Page_Load.

Abaixo temos o código para retornar os dados da tabela Clientes


// Retorna os Clientes
GridView1.DataSource = Cliente.FetchAll();
GridView1.DataBind();

Adicionar…


// Adiciona Cliente
Cliente cliente = new Cliente();
cliente.Nome = "Marcos";
cliente.Sobrenome = "Prado";
cliente.Cidade = "Belo Horizonte";
cliente.Telefone = "34-4125-4711";
cliente.Save();

Atualizar…


// Atualizar Cliente
Cliente cliente = new Cliente(4);
cliente.Nome = "Marcos";
cliente.Sobrenome = "Prado Silva";
cliente.Cidade = "Belo Horizonte";
cliente.Telefone = "34-4125-4711";
cliente.Save();

Apagar…


// Apaga Cliente informando o ID
Cliente.Delete(5);

Simples? Imagine se tivessemos que criar a conexão com o banco, montar toda a nossa DAL manualmente?

Acesse também o site oficial: http://subsonicproject.com/

Agora basta explorar as funcionalidades e facilidade do SubSonic.

E Apesar de nosso foco ser sempre C# o mesmo pode ser veito em VB.NET

Abraço e sucesso!!!