Igara - Sintegra
quinta-feira, 29 de julho de 2010
Busca  
Porta 80 Web Hosting
 :: Acessibilidade
Ir para conteúdo principal: ALT + 1
 :: Participe
Seja um autor de CD/DVD de Treinamento
Publique um artigo
Publique uma oportunidade
Publique uma notícia
Publique um curso
Publique uma dica
Publique um código
 :: Informativo
Receba nossos informativos por e-mail.
E-mail:   
 
Digite a palavra abaixo:  
 
 
 :: Oportunidades
Cadastrar oportunidades
Gerenciar suas oportunidades
Cadastrar nova empresa
 :: Especiais
Básico de C++
C++ Builder
Curso ASP.NET 3.5 em VB.NET e C#
Guia Prático de HTML
Testes com Visual Studio Team System 2008
 :: Desenvolvimento
ActionScript
ADO.NET
ASP
ASP.NET
Automação Comercial
C#
C/C++
Coldfusion
CSS
Delphi
Disp. Móveis
HTML
Java
Javascript
LSL (Second Life)
Modelagem
PHP
Python
Sharepoint
Silverlight
SQL
VBA (Office)
Visual Basic
Visual Basic .NET
Visual Fox Pro
WCF/WPF
Web Services
XML
 :: Infra
BizTalk Server
CRM
Exchange Server
ForeFront / Antigen / IAG
Interoperabilidade
ISA Server
Linux
MOF
MS Dynamics CRM
Network
OCS / LCS
Outlook
Powershell e Scripts
Redes
Segurança
System Center e Gerenciamento
Virtualização
Windows
Windows Server
 :: Banco de Dados
Access
Caché
Firebird
Interbase
MySQL
Oracle
SQL Server
Sybase
 :: Gerência
Arquitetura
Ciclo de Vida de Desenvolvimento
Controle de Versão
Estimativas
Metodologias
MOF
Qualidade e Testes
 :: Design
Corel
Flash
Photopaint
Photoshop
 :: Livros
Análise Sistemas
Aplicativos
Banco de Dados
Certificação
Design e CAD
Gerência
Hardware
Internet
Programação
Programação Web
Rede
Segurança
Servidores
Sistemas Operacionais
 :: CDs/DVDs
Desenvolvimento
Infra
Design
 :: E-Books
.NET 2.0 (VS 2005)
.NET 1.1 (VS 2003)
SQL Server
Excel 2007
Excel 2003
Access 2003
ASP 3.0
Delphi
Java
Artigos


MVP Profile
Introdução ao LINQ to SQL
Por: Ramon Durães
[Entre em contato com o autor ]
Especialista em desenvolvimento de software e Microsoft Most Valuable Professional (MVP) em Visual Studio Team System. Realiza treinamentos de .NET Framework em empresas, consultoria em arquitetura de software e implantação de Visual Studio Team System. Palestrante nos principais eventos da Microsoft no Brasil (Tech-Ed 2005, Tech-Ed 2006, Tech-Ed 2007, Tech-Ed 2008, Tech-ED 2009), Microsoft Innovation Days 2007 (Salvador, Brasília, Recife, Goiânia, Natal, Maringá), Microsoft Innovation Days 2009 (Salvador) , Campus Party Brasil 2009 e eventos regionais relacionados a grupos de usuários e universidades. Conhecido autor de artigos para os principais portais de conteúdo e autor de 10 publicações eletrônicas em CD (Video-Aula) pela editora Linha de Código além dos livros "Desenvolvendo para web usando o Visual Studio 2008" e "Gerenciando projetos de software usando Visual Studio Team System" pela editora Brasport. Pode ser encontrado em seu blog http://www.ramonduraes.net e @ramonduraes no Twitter.
Feed de artigos.
Feed de artigos deste autor.
Gere seu feed personalizado  
Introdução ao LINQ to SQL
Publicado em: 24/09/2007

Artigo recomendado para Visual Studio 2008 - SQL Server 2005/2008

A utilização de padrões baseados em orientação a objetos, tornou-se um dos requerimentos em qualquer aplicação atual. Já possuímos pleno domínio do  mundo OOP (Object Oriented Programming). Então chegou o momento de vencermos mais um desafio que é a barreira existente entre dados e objetos. Nosso primeiro passo será portar toda essa experiência adquirida  para fechamos o elo faltante que é a integração com base de dados, arquivos XML e objetos. A partir desse momento, estamos dando um grande salto na evolução de todos os conceitos atuais e iniciado de vez na linha do O/R Mapping (Mapeamento Objeto Relacional) e na exploração plena e orientação aos objetos no desenvolvimento de software. O .NET recebeu algumas extensões para permitir amplo suporte ao novo modelo de manipulação de objetos que ganhou o nome de LINQ (Language Integrated Query) conforme figura 01.


Figura 01 - Introdução ao LINQ

As mais diversas consultas de dados serão encapsuladas pelo mecanismo do LINQ expondo apenas objetos, tornando transparente se você usa um banco de dados, um xml ou outra fonte de dados qualquer.

.NET Framework 3.5

Para permitir o suporte a linguagem integrada de consulta, foi incorporado ao .NET algumas novas funcionalidades de forma a suportar o LINQ (Linguagem Integrada de Consulta). Dentre as novas funcionalidades, podemos citar:
Tipos anônimos, expressões lambdas e extensões de métodos, além da query  de consulta.

O/R Mapping

O modelo de mapeamento objeto relacional para banco de dados SQLServer, consiste no mapeamento das tabelas do banco de dados como classes, campos como propriedades, procedures e funções como métodos de forma que você tenha no designer de classe da aplicação um conjunto de classes que representam visão 1:1 do seu banco de dados. Acompanhe na figura 02 a tabela 'Products' do banco de dados e na figura 03 a representação da mesma já mapeada como a classe 'Product' conforme figura 03. Uma vez feito o mapeamento pelo simples processo de arrastar a tabela do banco para dentro do designer de classes, os desenvolvedores do projeto já podem usar o LINQ para manipular os objetos criados a partir das classes mapeadas.


Figura 02 - Tabela 'Products' do banco de dados


Figura 03 - Classe mapeada 'Product'

Após estabelecer o mapeamento, os benefícios são imediatos pois, a classe mapeada é igual a qualquer outra do .net. Então você de imediato, já vai ter acesso pelo Intellisense do Visual Studio sem precisar conhecer nomes de campos no banco de dados que agora aparecem para você como propriedades. Outro ganho, é sobre as consultas do LINQ que mostrarei logo a seguir. Como todo acesso será por meio das mesmas, você só vai escrever código .NET que além do Intellisense já comentado será validado contra erros de digitação pelo compilador.

Para melhor entender esse novo cenário, vamos retornar ao acesso tradicional usando ADO.NET para recuperar as informações do nosso banco de dados conforme Listagem 1.

ADO.NETSqlConnection c = new SqlConnection(…);

c.Open();

SqlCommand cmd = new SqlCommand(
@"SELECT p.ProductID, p.ProductName
FROM Products p
WHERE p.ProductName = @p0
");

cmd.Parameters.AddWithValue("@p0", "XYZ“);

DataReader dr = c.Execute(cmd);

while (dr.Read())
 
{
string ID = dr.GetString(0);
string ProductName = dr.GetString(1);
 }
dr.Close();
Listagem 01 - Consulta usando ADO.NET.

Agora que você já relembrou o acesso tradicional, confira na listagem 02 e na figura 04 o novo modelo de consulta utilizando o LINQ.


LINQvar db = new NorthwindDataContext();

var consulta = from p in db.Products
                    where (p.ProductName=="ZYZ")
                    select new
                   {p.ProductID,p.ProductName};

this.GridView1.DataSource = consulta;
this.GridView1.DataBind();


Listagem 02 - Consulta usando LINQ.


Figura 04 - Digitando consulta para coleção de produtos.

Você deve ter tido duas reações. Primeiro viu a diferença na qualidade de linhas de código para fazer a operação e não tenho dúvidas que você já está curioso para aprofundar os estudos no LINQ to SQL. Em segundo, deve estar estranhando a forma de construção desse código e aí que entra o .NET 3.5. Declaramos um objeto anônimo chamado de consulta e depois seu tipo com o resultado da query expression na coleção Products. Ao fazermos essa consulta, o LINQ vai converter essa solicitação em um código T-SQL e vai buscar no banco de dados as linhas referentes aos objetos solicitados. Ao receber a resposta do banco de dados, ele vai retornar uma coleção de objetos que armazenaremos no objeto consulta. O resto foi somente popular essa coleção no gridview. Você pode conferir o exemplo do código T-SQL gerado pelo LINQ na listagem 03. Uma característica importante que vale ressaltar nesse momento, é que o objeto consulta mesmo sem ser inicializado com um tipo especifico, ele é fortemente tipado, sendo que logo após a definição do seu tipo, ele não pode ser modificado.

 
T-SQLSELECT [t0].[ProductID], [t0].[ProductName]
FROM [dbo].[Products] AS [t0]
WHERE [t0].[ProductName] = 'ZYZ';

Listagem 03 - Código T-SQL gerado pelo LINQ.

Conforme você observou na figura 04, com o LINQ seu acesso a dados será simplificado e o conhecimento da base de dados será o uso da sua linguagem de programação no dia a dia usando o próprio Intellisense sem precisar conhecer todos os nomes do banco de dados. Um comentário interessante ainda sobre essa questão, é o código 'where' na figura 04 e o código T-SQL gerado no banco de dados conforme listagem 03, onde você observa que um código .net é convertido para código T-SQL pelo LINQ.

Para saber mais:
LINQ TO SQL para iniciantes


Até próximo artigo
Sucesso em seus projetos.





MS TechEd 2010



 

Conheça os produtos do autor Ramon Durães

Inclua um comentário sobre o artigo Topo
Elogios e críticas são muito bem vindos, porém o comentário deve ter referência ao artigo em pauta.
O portal e o autor agradecem.
Nome:    
E-mail:      
Comentários:    
Digite a palavra abaixo:  
Para dúvidas técnicas, NÃO UTILIZE ESTE ESPAÇO, utilize nosso fórum de discussão.
http://linhadecodigo.com.br/cs2/forum
 
Comentários sobre o artigo Ver Todos comentários
Uma otima opção, mais de longe resolve de fato o problema o mapeamento objeto relacional. Somente vamos resolver esse problema quando o banco for O.O.

Mapear um banco relacional para O.O não é simplesmente transformar campos em propriedades. Isso já tinhamos com o DataTable.

Abandonar a utilização de Store Procedures usando LINQ do lado da aplicação como fica o desempenho?

Utilizar o banco de dados somente como um repositorio bobo e usar tudo O.O sem utilizar nenhuma regra de negocios do lado do banco é surreal. Uma constrait já seria uma regra de negocio.

Se estudar material sobre Sql Server onde fornece diversas facilidades, clr do lado do banco, novas comandos SQL, ferramentas para BI e etc. E depois estudar o material de .Net Linq e etc , dá um nó pois cada um mostra vantagens fantasticas mas não dois juntos. Tem um grande GAP nisso o que acho preocupante.

Usar LINQ e depois fazer um BI nessa base "boba" onde esta tudo na camada de negócio com O.O sera desafiante...



Quem enviou: Renato Mattos
Postado em: 30/3/2009 0:00:00
Outros artigos do autor Topo
Administrando o código fonte usando Visual Studio Team System
Primeiros passos no Visual Studio Team System
Editando múltiplas linhas usando o GridView no ASP.NET 3.5
Explorando o IIS 7.0
Explorando o ASP.NET AJAX
Perguntas e respostas sobre Visual Studio Team System
Introdução ao ADO.NET Entity Framework
Explorando o ASP.NET 3.5 Dynamic Data Controls
Gerenciando banco de dados usando Visual Studio Team System
Explorando o Visual Studio Team System
Otimizando a paginação do ASP.NET para SEO usando LINQ
Acessando código fonte do .NET Framework
Explorando Visual Studio 2008
ADO.NET 2.0 - Copiando dados usando Bulk Copy
Explorando o ASP.NET 2.0 RSS Toolkit
Documentando código .NET
Introdução ao Microsoft Silverlight
ASP.NET 2.0 - Criando urls pra web 2.0
ASP.NET 2.0 - Adicionando Atlas no Toolbox
ASP.NET 2.0 - Data Access Layer com TableAdapter
ASP.NET 2.0 - Paginando dados com SQLServer (2000/2005)
ASP.NET 2.0 - Atlas Framework Toolkit
VSTS - Eu Instalei o Visual Studio Team Foundation Server
ASP.NET 2.0 - Criando um PostBack
ASP.NET 2.0 - Atlas FrameWork (Build Janeiro)
ASP.NET 2.0 - AJAX para cá, AJAX para lá. Vá de Atlas Framework
ASP.NET 2.0 - Recursos de localização parte 01
ASP.NET 2.0 - SiteMapPath
ADO.NET 2.0 - Conhecendo as novidades - parte 1
ASP.NET 2.0 - Herança visual com Master Page
ASP.NET 2.0 - Utilizando XmlDataSource
.NET 2.0 - Instalando facilmente SmartClient com ClickOnce
.NET 2.0 - Introdução ao Generics (Whidbey)
ASP.NET 2.0 - Client Callback dando mais inteligência no cliente
ASP.NET 2.0 - Visual Studio 2005 Whidbey - Pré Beta2 (Preview)
ASP.NET 2.0 - Introdução a WebParts
ASP.NET - DataGrid com ordenação
ASP.NET 2.0 - GRIDVIEW (Novo Datagrid) Visual Studio 2005
ASP.NET 2.0 - Visual Studio 2005 (Whidbey)
ASP.NET - WebServices para Iniciantes
ASP.NET - Gráficos Barra e Pizza (System.Drawing)
.NET Class Libary - Expanda as funcionalidades com seu Framework
ASP.NET - Janela Modal com calendário
ASP.NET - DataGrid com CheckBox e Paginação
.NET - Escolhendo VB.NET ou C#
.NET: ADO.NET para iniciantes
.NET Class Libary - Componente Exportador Excel (*.xls)
ASP.NET - Utilizando UserControls
ASP.NET / DataGrid – Master Details com edição do Details (Pai-Filho)
ASP.NET: TreeView IE WebControl com banco de dados
ASP.NET / DataGrid – Adicionando rolagem (Scroll)
ASP.NET / DataGrid – Tornando Linha sensível ao clique do mouse
ASP.NET - Utilizando SSL (Secure Socket Layer)
ASP.NET - Ganhe agilidade em operações com Strings
Artigos relacionados Topo
Descubra o ADO.NET Entity Framework
Desenvolvendo uma aplicação CRUD com Desing Patterns – (parte 4) - Aplicando o Padrão Singleton...
Desenvolvendo uma aplicação CRUD com Desing Patterns – (parte 3) - Construindo o FrameWork...
Desenvolvendo uma aplicação CRUD com Desing Patterns – (parte 2) - Entendo um FrameWork...
Desenvolvendo uma aplicação CRUD com ADO.NET e Padrões de Projeto - Parte 1
Acesso a dados em aplicações ASP.NET – Conceitos básicos – parte 3
O que há de novo no ADO.Net 2.0
Vídeo: Windows Mobile 6: Banco de Dados (Para assinantes)
Implementando CommandTimeOut em DataSets Tipados
Acesso a dados em aplicações ASP.NET – Conceitos básicos – parte 2
Acesso a dados em aplicações ASP.NET – Conceitos básicos – parte 1
Linq to All
Utilizando SGBD FireBird 2.0 com ADO.NET
ADO.NET 2.0: A importância do Pool de Conexões
Por dentro do ADO.NET 2.0
Uma Visão Geral do ADO.NET
TreeView com VB.NET - Alimentando o TreeView com OleDbDataReader do ADO.NET
Dicas de ADO.NET (GC.Collect, ADO.NET, múltiplos Adapters)
Acessando banco de dados em .NET
Criando um DALHelper (Data Application Layer - Camada de Dados)
Usando componentes com ADO.NET
A Classe DataSet e XML no ADO.NET
Consulta a BD no .NET: Parte 2, WinForms
Consulta a BD no .NET: Parte 1, páginas ASP
ADO.NET – Uma nova arquitetura para acesso a banco de dados
Produtos relacionados Topo
CD/DVD: CD de Treinamento Criando Aplicações Asp.Net em Camadas (parte integrante do portal de vídeos .Net)
Livro: Desenvolvendo para web usando o Visual Studio 2008
CD/DVD: DVD de Treinamento Explorando o LINQ para SQL
Pacote: Pacote: Explorando banco de dados usando .NET II (3 CDs)
Pacote: Pacote: Explorando banco de dados usando .NET I (2 CDs)
CD/DVD: CD de Treinamento ASP.NET para Iniciantes - Visual Studio 2008
CD/DVD: CD de Treinamento sobre LINQ to SQL para iniciantes com Visual Studio .Net 2008
CD/DVD: CD de Treinamento Introdução a banco de dados com SQL Server 2005 Express
CD/DVD: CD de Treinamento sobre ADO.NET para Iniciantes
CD/DVD: CD ASP.NET 2.0 - Atualização Rápida (Visual Studio .NET 2005)
Livro: Use a Cabeça PMP
© Copyright 2001-2010 Codeline Editora, Comércio e Tecnologia Ltda. | Política de privacidade e de uso | Anuncie | Fale conosco

» Site hospedado na Porta 80 Web Hosting «
Nossos números
Dicas: 1.314
Códigos/scripts: 279
Funções de VBScript : 90
Funções JScript : 05
Livros: 1.805
Notícias: 2.488
Artigos: 2.972
Cases: 14
Oportunidades: 4.546
Publicidade

Conheça a loja do Linha de Código.

Microsoft indica Linha de Código.

Assine a Revista Mundo .NET
Portal de Vídeos .NET - os melhores vídeos .NET estão aqui
O que você fará com o Visual Studio 2010?
Revista Codificando .Net

Siga-nos no Twitter

Linha de Código no Orkut
Fórum de discussão do portal Linha de Código
Feeds
Oportunidades
Notícias
Artigos
Artigos personalizado
       (Por assunto)
Artigos personalizado
       (Por autor)
Portal Vídeos .NET
Portal Vídeos Delphi
LC Blog
       (Onde você faz a notícia)
Promoções
Promoção Mobile com entrega via download (válido somente para pagamento via boleto bancário)
Promoção Mobile com entrega via download (válido somente para pagamento via boleto bancário)
De: R$ 189,00
Por: R$ 126,00
Promoção Wordpress + Tabless (válido somente para pagamento via boleto bancário)
De: R$ 149,70
Por: R$ 99,80
Promoção C# Básico (válido somente para pagamento via boleto bancário)
De: R$ 185,90
Por: R$ 136,00
Promoção PHP + MYSQL Intelimax (válido somente para pagamento via boleto bancário)
De: R$ 308,00
Por: R$ 219,00
Promoção Especial Infra
De: R$ 175,95
Por: R$ 136,00
CDs/DVDs
DVD Desenvolvimento de Games - Programando Jogos com o 3D Game Studio
DVD Desenvolvimento de Games - Programando Jogos com o 3D Game Studio
Por: R$ 59,00
DVD Curso de CorelDraw X4
Por: R$ 79,90
DVD Curso de Fireworks CS4
Por: R$ 49,90
DVD Curso de Indesign CS4
Por: R$ 55,00
DVD Curso de Efeitos Digitais
Por: R$ 49,90
Livros
MSProject 2007 - Metodologia e Critérios de Qualidade para o Gerenciamento de Projetos
MSProject 2007 - Metodologia e Critérios de Qualidade para o Gerenciamento de Projetos
De: R$ 129,00
Por: R$ 77,40
Foundation FLASH CS3 para Designers
Ciência Moderna
De: R$ 139,00
Por: R$ 83,40
Recursos Visuais na Web com PHP
Ciência Moderna
De: R$ 49,00
Por: R$ 29,40
Crie um Sistema Web com PHP 5 e AJAX - Controle de Estoque
Erica
De: R$ 99,50
Por: R$ 84,50
Crie Projetos Gráficos com Adobe Photoshop CS4, CorelDRAW X4 e Adobe InDesign CS4 - em Português
Erica
De: R$ 77,50
Por: R$ 65,80
E-Books
Manual Completo de Estudos MCSE 70-270 - Instalando, Configurando e Administrando o Windows XP (506 páginas) - Entrega via download
Manual Completo de Estudos MCSE 70-270 - Instalando, Configurando e Administrando o Windows XP (506 páginas) - Entrega via download
Por: R$ 30,00
Manual de Estudos - Exame 70-291 - Windows Server 2003 (606 páginas) - entrega via download
Por: R$ 30,00
Dominando MS – Visio ® em 20 Passos - Melhores Práticas em Gestão de Projetos (entrega via download)
Por: R$ 30,00
MS-Project® 2007 - Melhores Práticas de Gestão de Projetos - Dominando MS – Project ® em 20 Passos (e-book com entrega via download)
Por: R$ 20,00
Banco de dados com C# e Visual Studio .Net 2005 (entrega via download)
Por: R$ 20,00
Os 10+ | Autores do dia
Israel Aéce
Júlio Cesar Fabris Battisti
Anderson Patricio
Alfred Reinold Baudisch
Luiz Felipe de Freitas
Robert Martim
Ramon Durães
Alessandro de Oliveira Faria
José Carlos Macoratti
Eric C M Oliveira
Os 10+ | Artigos do dia
HTML Básico
HTML Avançado
Criando aplicativos para o Orkut
Tutorial de Tabelas Dinâmicas no Excel – Parte 1
Excel: fórmulas matriciais
ASP.NET 2.0 - Explorando o GridView
Iniciando um projeto de Nota Fiscal Eletrônica - NFe
PL/SQL - Procedures e Funções
Excel: Comparando Listas
PHP: Formulários e upload de múltiplos arquivos e fotos