ASP .NET - LINQ To SQL e Stored Procedures II
No meu primeiro artigo ASP .NET - LINQ To SQL e Stored Procedures I criei uma aplicação ASP .NET usando o método tradicional onde definimos o banco de dados , a tabela e as stored procedures.
Em seguida criei a camada de acesso a dados - DAL - onde defini os métodos para acesso e manutenção dos dados, e, por último, criei a camada de negócio - BAL - contendo os membros , propriedades e métodos da aplicação.
A camada de apresentação é composta de um componente GriView que exibe os dados da tabela Emails permitindo também a edição dos registros e de um componente FormView onde efetuamos a inclusão de novos registros.
Embora seja bem simples, a aplicação possui uma estrutura clássica baseada em camadas com utilização de stored procedures.
O que vamos fazer agora ?
Usar LINQ To SQL...
Neste artigo eu mostrar como podemos usar os recursos do LINQ para nos ajudar a efetuar o acesso e a manutenção das informações substituindo a camada de acesso a dados, de maneira que não vou precisar me preocupar com a conexão e os objetos de acesso a dados visto que, através do mapeamento objeto relacional feito no descritor LINQ, teremos acesso, via consultas LINQ a todos os recursos necessários para efetuar essas tarefas de manutenção de dados.
Apenas para lembrar temos abaixo a figura apresentando o projeto criado no artigo anterior onde podemos notar as camadas de negócio - BAL, e, de acesso a dados - DAL.
Através do mapeamento objeto Relacional- O/R - vamos substituir toda a camada de acesso a Dados - DAL , e, iremos criar novamente os métodos da camada de negócio - BAL - usando consultas LINQ.
Vamos portanto abrir o projeto CadEmails criado anteriormente e excluir a camada de acesso a dados e limpar todo o código presente na camada de negócio - BAL.
Vamos excluir também o objectDataSource que chamamos de oCadEmailDS pois iremos criar um novo objectDataSource usando as consultas LINQ que iremos criar na camada BAL.
Vamos começar criando o mapeamento objeto Relacional via Descritor LINQ que irá substituir a nossa camada de acesso a dados. No menu Web Site selecione Add New Item e a partir da janela Add New Item selecione o template LINQ To SQL Classes e informe o nome CadEmails.dbml clicando no botão Add;
A seguir abra a janela Database Explorer e localize a conexão com o banco de dados Escola.mdf , expanda os objetos e em seguida arraste a tabela Emails e as stored procedures para o descritor LINQ no Panel Methods , conforme a figura abaixo:
Agora vamos definir novos métodos em nossa camada de negócio - BAL - usando a consultas LINQ. Digite o código abaixo na classe BAL na pasta App_Code:
Public Class BAL Public Shared Function selecionaTodos() As List(Of sp_SelectAllEmailsResult) Dim db As New CadEmailsDataContext Dim emails = From e In db.sp_SelectAllEmails Return emails.ToList() End Function Public Shared Sub incluirEmails(ByVal alunoNome As String, ByVal alunoEmail As String, ByVal ativo As Boolean, ByVal alunoID As Integer) Dim db As New CadEmailsDataContext db.sp_InsertEmails(alunoNome, alunoEmail, ativo, alunoID) End Sub Public Shared Sub atualizaEmails(ByVal alunoID As Integer, ByVal alunoNome As String, ByVal alunoEmail As String, ByVal ativo As Boolean) Dim db As New CadEmailsDataContext db.sp_UpdateEmails(alunoID, alunoNome, alunoEmail, ativo) End Sub Public Shared Sub deletaEmails(ByVal alunoID As Integer) Dim db As New CadEmailsDataContext db.sp_DeleteEmails(alunoID) End Sub End Class |
Na camada de negócios representada pela classe BAL temos 4 métodos criados usando os recursos disponíveis pelo mapeamento O/R LINQ:
Em todos os métodos note que instanciamos um objeto CadEmailsDataContext : Dim db As New CadEmailsDataContext - através do qual temos acesso aos mapeamentos realizados no descritor LINQ.
Perceba que o código ficou bem mais enxuto do que o existente anteriormente na camada BAL pois não temos que nos preocupar com a conexão com os provedores , datasets, datareaders, etc...
Agora vamos voltar a interface e criar novamente o objetoDataSource apontando para os métodos criados.
Inclua a partir da ToolBox , guia Data , um componente ObjectDataSource no projeto adotando o nome padrão. Selecione o objeto e clique no link Configure DataSource;
Na janela Choose a Business Object selecione a nossa camada de negócios representada pela classe BAL e clique no botão Next>
Agora em cada uma das guias selecione na combo - Choose a method - o método correspondente a ação declarada na guia:
Ao terminar clique no botão Finish.
Selecione o componente GridView e verifique se a sua propriedade DataKeyNames esta definida para AlunoID. Se não estiver defina a propriedade para este valor.
Atribua o componente ObjectDataSource1 criado aos componentes GridView e FormView. Execute o projeto web e você verá a interface idêntica a do primeiro artigo , funcionando da mesma forma , com uma diferença : agora estamos usando LINQ to SQL.
Simples, rápido e funcional: LINQ to SQL.
Pegue o projeto completo aqui: cadEmailsLINQ.zip
referências:
José Carlos Macoratti