DICAS .NET

 Busca Online:

 
Seja bem vindo(a) Visitante, você não está logado deseja logar
no portal para participar de serviços e promoções ? clique aqui.


No caso de perder a senha, acesse aqui e receba por e-mail.
Deseja entrar em contato conosco, acesse aqui e mande-nos um e-mail.

O/R M na prática com LLBLGen

por Rubens Arandas de Oliveira em 16/10/2006

No artigo anterior vimos o que é O/R M e como ele funciona. Neste artigo veremos como criar um programa fazendo uso de O/R M com a ferramenta LLBLGen Pro 2.0, SQL Server 2000 e Visual Studio 2005.

 

Para que possamos usufruir de todos os benefícios de O/R M faz-se necessário ter um banco de dados bem estruturado e definido, pois a ferramenta criará uma biblioteca O/R M fazendo o mapeamento de todas as tabelas, com seus campos, respectivos tipos de dados e seus relacionamentos.

 

Com a intenção de pouparmos a extensão do artigo, faremos uso de um banco de dados já definido e conhecido pela a maioria, o Nortwind.

 

Criando a biblioteca O/R M

O primeiro passo é baixar o LLBLGen no site www.llblgen.com e depois instalá-lo.

 

Feito a instalação, execute o LLBLGen  para que criemos a biblioteca O/R M do banco de dados Northwind.

 

No menu de opções escolha File, depois New. Será apresentada a janela Create New Project. Preenche-a intuitivamente como a figura abaixo, trocando as configurações de banco de dados conforme a realidade do seu cenário, só não deixe de selecionar apenas o banco de dados Northwind em Catalog(s) to use.

 

Janela Create New Project

 

Clique no botão Create e será apresentado a seguinte Janela.

 

Janela principal do LLBLGen

 

Ao criar um projeto, o LLBLGen permite criar quatro tipos de objetos:

Etities: São objetos (Classes) que representam as tabelas do banco de dados, com toda sua estrutura (Campos, Relacionamentos, Índices etc).

Typed Lists: São objetos (DataTables Tipados) que representam uma query criada graficamente pela IDE do LLBLGen.

Typed Views: São objetos (DataTables Tipados) que representam uma view definida no banco de dados.

Stored Procedure Calls: São métodos (com ou sem retorno) que representam chamadas de stored procedures definidas no banco de dados.

 

Neste artigo iremos utilizar somente os objetos entities, para mais informações sobre os outros objetos, consulte a documentação (Help) do LLBLGen

 

O nosso projeto foi criado, a ferramenta já leu toda a estrutura do banco de dados, agora temos que definir quais tabelas estarão disponíveis para uso. No Project Explorer clique com botão direito do mouse sobre Entities e escolha a opção Add New Entities Mapped On Tables From Catalog(s). Será apresentada a seguinte janela

Janela New Entities found

 

Selecione todas as entidades (tabelas) e clique no botão Add to project

No Project Explorer é possível notar que foram criadas todas as entities e seu s atributos.

 

Feito isso, a nossa biblioteca já estará definida e teremos apenas que gerar o código.

Para tal, clique no menu Project e depois em Generate.

Janela Configure the Code generation process

 

Target language : Linguagem a qual será gerada a biblioteca

Target plataform : Plataforma a qual será gerada a biblioteca (Pode-se optar por compact framework para projetos smart devices)

Root namespace : Namespace do projeto

Template Group: Escolhendo SefServicing a própria Entity terá a lógica para persistência dos dados, enquanto Adapter requer um objeto ( DataAcessAdapter ) para fazer a persistência dos dados.

Destination root folder : Diretório em que será gerado o código

 

Para mais informações consulte a documentação do LLBLGen

 

Defina o campo Destination root folder conforme seu cenário e os outros campos conforme figura e clique em Start generator

 

Aparecerá a tela de confirmação

 

Clique no botão Close

 

Pronto! A biblioteca O/R M já foi gerada e já podemos fazer uso dela.

 

Usando a Biblioteca O/R M em um programa .Net

Pelo windows explorer é possível verificar os arquivos e pastas gerados pelo LLBLGen, é só abrir a pasta informada no campo Destination Root Folder.

Você deverá possuir uma estrutura como esta

Windows explorer visualizando pasta do projeto

 

Abra o arquivo Microsoft.Samples.Northwind.vbproj.

Na Solution Explorer você poderá notar toda estrutura criada para sua biblioteca O/R M. Aproveite para explorar o código gerado pela ferramenta, mas não se atenha a complexidade dele, pois na verdade, você nem precisaria ver o código gerado.

Enfim vamos testar nossa biblioteca O/R M, para isso adicione um novo projeto Windows Application Chamado WinNorthwindORM. Depois de criado o projeto, na Solution Explorer, clique sobre ele com o botão direito do mouse e escolha Set as StartUp Project.

 

 

Solution Explorer para o projeto WinNorthWindORM

 

Novamente na Solution Explorer clique sobre o projeto WinNorthwindORM com o botão direito do mouse e escolha Add References. Localize e selecione a guia Projects, depois escolha o projeto Microsoft.Samples.Northwind e clique em OK

Janela Add References

 

Para fazermos uso das bibliotecas O/R M é necessário utilizamos um framework que possua a lógica de persistência dos dados, deste modo teremos que adicionar referência ao framework do LLBLGen. Novamente na Solution Explorer clique sobre o projeto WinNorthwindORM com o botão direito do mouse e escolha Add References. Localize e selecione a guia .Net, depois escolha o component LLBLGen Pro .Net 2.0ORM Support Class Library e clique em OK

 

Janela Add References

O projeto WinNorthwindORM, por padrão, foi criado com um formulário chamado Form1, assim vamos utiliza-lo como interface para manipulação das categorias e seus repectivos produtos no banco de dados northwind. Para tal, configure o Form1 conforme figura abaixo.

Formulário Form1

 

Note: O Form1 possui dois groupbox(grbCategorias, grbProdutos), cada groupbox com um textbox(txtCategoria, txtProduto), um button (btnAdicionarCategoria, btnAdicionarProduto) e um listbox (lstCategorias e lstProdutos)

 

Para que a Biblioteca de O/R M saiba qual o banco de dados a ser usado é necessário adicionar um arquivo de configuração App.Config e adicione a seguinte chave na seção configuration

 

  <appSettings>

    <add key="Main.ConnectionString" value="data source=(local);initial catalog=Northwind;integrated security=SSPI;persist security info=False;packet size=4096"/>

  </appSettings>

 

Note: A chave deve ser configurada conforme seu cenário e a chave Main.ConnectionString pode ser alterada para outro nome na janela de configuração de projeto no LLBLGen

 

 

Enfim, podemos codificar!

Prepare o código do seu formulario deste modo

 

REM Namespaces da biblioteca O/R M

Imports Microsoft.Samples.Northwind.EntityClasses

Imports Microsoft.Samples.Northwind.CollectionClasses

Public Class Form1

    REM Objetos de coleção de entidades

    Private Produtos As ProductsCollection

    Private Categorias As New CategoriesCollection

 

    REM Procedimento para savar Category no bando de dados

    Private Sub SaveCategory(ByVal CategoryName As String, ByVal Description As String)

        REM Cria objeto

        Dim NovaCategoria As New CategoriesEntity()

        REM Atribui valores ao objeto

        NovaCategoria.CategoryName = CategoryName

        NovaCategoria.Description = Description

        REM Salva informações no banco de dados

        NovaCategoria.Save()

    End Sub

    Private Sub SaveProdutct(ByVal CategoryId As Integer, ByVal ProductName As String)

        REM Cria objeto

        Dim NovoProduto As New ProductsEntity()

        REM Atribui valores ao objeto

        NovoProduto.CategoryId = CategoryId

        NovoProduto.ProductName = ProductName

        NovoProduto.Discontinued = False

        REM Salva informações no banco de dados

        NovoProduto.Save()

    End Sub

    REM Procedimento para mostrar categorias

    Private Sub ShowCategories()

        Me.Categorias.GetMulti(Nothing)

        Me.lstCategorias.ValueMember = "CategoryId"

        Me.lstCategorias.DisplayMember = "CategoryName"

        Me.lstCategorias.DataSource = Me.Categorias

    End Sub

    REM Procedimento para mostrar produtos

    Private Sub ShowProducts()

        Dim Index As Integer = lstCategorias.SelectedIndex

        If Index >= 0 Then

 

            Me.Produtos = Me.Categorias(Index).GetMultiProducts(True)

 

            Me.lstProdutos.ValueMember = "ProductId"

            Me.lstProdutos.DisplayMember = "ProductName"

            Me.lstProdutos.DataSource = Me.Produtos

        Else

            Me.lstProdutos.DataSource = Nothing

        End If

    End Sub   

End Class

 

Feito isso, precisamos apenas programar os eventos de nossos controles

 

Para o evento load do Form1 codifique

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Me.ShowCategories()

    End Sub

 

 

Para o evento SelectedValueChanged do listbox de categorias codifique

    Private Sub lstCategorias_SelectedValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lstCategorias.SelectedValueChanged

        Me.ShowProducts()

    End Sub

 

Para o evento Click do botão de adicionar categorias codifique

    Private Sub btnAdicionarCategoria_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAdicionarCategoria.Click

        Me.SaveCategory(txtCategoria.Text, "")

        Me.ShowCategories()

    End Sub

   

Para o evento Click do botão de adicionar produtos codifique

    Private Sub btnAdicionarProduto_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAdicionarProduto.Click

        Dim Index As Integer = lstCategorias.SelectedIndex

        If Index >= 0 Then

            Dim CategoryId As Integer = Convert.ToInt32(lstCategorias.SelectedValue)

            Me.SaveProdutct(CategoryId, txtProduto.Text)

        End If

    End Sub

 

Feito isso o projeto já está pronto! Agora só rodar o programa

 

Conclusão

O/R M é um novo conceito nada dificil de implementar e pode-se diminuir muito tempo de desenvolvimento, além de diminuir a complexidade do código e eliminar a necessidade de escrever comandos T-SQL.

 

Espero que tenha gostado do LLBLGen e acima de tudo, O/R M.

 

Aguardo seu comentário...

 

voltar   comente  subir

Download Copy





 
Rubens Arandas de Oliveira



Comentários:

Comentado por: Flávio Fernandes - 27/10/2006 11:16:02
Muito bom o artigo, demonstra de forma clara o conceito e uso do ORM, sem dúvida hoje no corporativo o tempo de desenvolvimento de um projeto é muitas veses cansativo ao escrever objetos CRUDE, com ORM esta tarefa é eliminada, nós desenvolvedores nos concentramos apenas em escrever as regras de negócios e interação entre as camadas, Parabéns pelo artigo.
Comentado por: Rodrigo Maduro - 15/2/2007 23:06:29
E ai Rubão... Facinho a implementação hein! Lah no trabalho estavamos montando a classe na mão.rsrsrsrs.
Vou fazer uns teses na empresa.

Valeu a dica!

Comente (dê sua opinião):

Comentário:
Código Imagem:  (digite o código da imagem respeitando maiúsculo e minúsculo)

Favor digitar o código da imagem para cadastramento.

 

Outros Artigos do Autor

O/R M na prática com LLBLGen
O R M( Object Relational Mapping) - Manipulação de dados sem T-SQL e ADO.Net




eCode10 Magazine 4 Edição

Baixe a sua sem pagar nada, basta apenas ter um cadastro na comunidade aspneti.com ou ser usuário do ecode10.com.



Edições anteriores
LAYERDEV

Notícias *

Notebook 3D ou 4K?

Notebook vem com tudo...

Visão do Futuro - Day of Glass 2

Futuro próximo pode chegar cedo?...

Lenovo de 14 polegadas IdeaPad

Veja o novo notebook Lenovo IdeaPad...

Windows 8 Store

Channel9 publica um vídeo da Windows Store...

Sony Vaio série Z

Novo Vaio Ultrabook? ou não Ultrabook?...

Samsung quer comprar RIM

Imagine se juntar as duas companhias...

Surface 2.0 mostrado

Novo Surface é mostrado de forma incrível...

Skype Tablet

Será que esse skype tablet pega mesmo?...

Lenovo e o seu novo Ultrabook

Ultrabook chega também pela Lenovo...




NETITC