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:
José Carlos Macoratti