ASP.NET 2.0 - Usando LINQ to SQL II (O SQL morreu ?)


O SQL já era... ?

Na primeira parte deste artigo mostrei os passos básicos de como usar o LINQ To SQL em uma aplicação ASP .NET.

Nesta segunda parte vou mostrar como criar uma aplicação mestre-detalhes e realizar operações de ordenação e filtro de dados com LINQ To SQL.

Vou continuar com o projeto do artigo anterior onde havia criado um datacontext chamado Northwind.dbml onde definimos a classe Order a partir da tabela Orders do banco de dados Northwind.mdf. Veja a estrutura do projeto anterior abaixo:

Nota: Para saber mais sobre DataContext leia o meu artigo: LINQ To SQL - DataContext

Vamos então criar um novo mapeamento usando o descritor Objeto Relacional do LINQ to SQL arrastando a partir da janela DataBase Explorer a tabela Order Details para o descritor:

Será criada a entidade Order_Detail a partir da tabela Orders Details e uma associação entre as entidades Order e Order_Detail representando o relacionamento um-para-muitos existente entre as tabelas.

Eu vou aproveitar a classe Order.vb que criamos anteriormente e vou definir um novo método que irá retornar a relação de detalhes de pedidos para um pedido identificado pelo seu código de pedido.

Function SelectOrderDetailsByOrderID(ByVal pedidoId As Integer) As IEnumerable(Of Order_Detail)

        Dim db As New NorthwindDataContext()

        Return From o In db.Order_Details _
               Where o.OrderID = pedidoId _
               Order By o.UnitPrice

    End Function

Eu criei o método SelectOrderDetailsByOrderID que usa o código do pedido - PedidoID - como parâmetro;

Para conseguir o resultado criei uma consulta LINQ que obtêm os detalhes dos pedidos a partir da classe Order_Details quando o código do pedido for igual ao código do pedido selecionado.

Vamos então criar a interface na página ASP . NET para apresentar este resultado.

No menu WebSite opção Add New Item selecione o template WebForm e informe o nome Pedidos.aspx;

A seguir vamos incluir, a partir da toolbox, um controle DropDownList a partir da toolbox na página Pedidos.aspx para exibir os pedidos;

Selecione agora o dropdownlist e em DropDownList Tasks clique no item Choose Data Source selecionando <new data source...>;

Em seguida selecione a opção Object como tipo de fonte de dados e informe o nome oOrderDS;

Na janela Choose a Business Object selecione a classe Order que criamos com os métodos para selecionar os pedidos;

Agora podemos selecionar o mesmo método getOrdersQuery() que definimos na classe Order anteriormente e que retorna uma relação de pedidos e que irá popular o controle Dropdownlist;

Clicando no botão Finish será exibido a janela Choose a data Source onde iremos definir o que será exibido no controle e o valor do campo que será usado. No nosso caso vamos exibir uma relação de pedidos usando o código e o valor do campo OrderID será usado quando o pedido for selecionado;

Agora vamos incluir um controle GridView para exibir os detalhes dos pedidos que serão exibidos quando um pedido for selecionado a partir do dropdownlist;

Em GridView Tasks , opção Choose Data Source, selecione a opção: <new data source...>

Na janela Choose a Data Source type informe Object pois vamos usar as entidades mapeadas para o banco de dados criadas pelo LINQ;

Em Choose Business Object selecine o objeto Order que contém os métodos que vamos usar no projeto;

Agora selecione o método SelectOrderDetailsByOrderID() que criamos para selecionar os detalhes dos pedidos;

Como o método utiliza um parâmetro, que é o código do pedido, precisamos informar de onde virá esta informação.

No nosso exemplo o código do pedido virá do controle DropDownlist1 então selecione conforme a figura abaixo:

Clicando em Finish iremos obter o seguinte leiaute para a nossa página Pedidos.aspx:

Executando o projeto e selecionando um número de pedido a partir do dropdownlist iremos ver os detalhes no GridView conforme figura abaixo:

Como você mesmo notou usar LINQ To SQL com ASP .NET é bem simples , nos poupa trabalho pois ao gerar o mapeamento objeto relacional não temos que nos preocupar com SQL , conexões , comandos , etc. É tudo gerenciado pelo LINQ. Além disso o código necessário é enxuto e usamos somente a sintaxe da linguagem VB .NET e a consulta LINQ sem ter código SQL embutido.

Será que o SQL morreu ???

Até agora temos feito apenas a exibição de dados , será que podemos também alterar e incluir dados em páginas ASP .NET usando LINQ To SQL ?

Aguarde a continuação da última parte : Usando LINQ to SQL III (O SQL morreu, viva o SQL...)

Até lá...

Referências:

  • http://www.microsoft.com/brasil/msdn/Tecnologias/arquitetura/LINQ.mspx
  • LINQ - http://msdn2.microsoft.com/en-us/netframework/aa904594.aspx
  • 101 LINQ Samples
  • VB 2008 - Criando uma aplicação completa com LINQ To SQL - III
  • VB 2008 - Criando uma aplicação completa com LINQ To SQL - II
  • VB 2008 - Criando uma aplicação completa com LINQ To SQL - I
  • LINQ To SQL - Descritor O/R, DataContext e Stored Procedures
  • ASP .NET 2008 - LINQ To SQL - operações básicas

  • José Carlos Macoratti