CursosLINQ to SQL    
LINQ to SQLMinimize

LINQ
significa Language Integrated Query, ou seja, linguagem de consulta integrada e visa manipular qualquer tipo de objeto. Foi incluída no Visual Studio 2008 e nas versões free do Visual Studio Express.

Para manipular banco de dados temos atualmente os seguintes templates:

LINQ to SQL
– desenvolvido para o banco de dados SQL Server e iremos utilizar no nosso exemplo.
LINQ to XML
– desenvolvido para manipular arquivos em XML.
LINQ to DataSet – desenvolvido para manipular DataSet.
 
Para iniciar o exemplo, carregue o Microsoft Visual Web Developer 2008 Express Edition.
Caso ainda não tenha instalado clique aqui para saber como:
Instalar Visual Studio 2008 Express
 
Clique em File/New Web Site e digite WebLINQ, conforme figura abaixo.

InstallCSharp.jpg  

Nesse exemplo vamos criar uma tabela simples no SQLServer, pode ser qualquer versão do SQL (Express, SQL 2000, SQL 2005, SQL 2008)

Clique em Database Explorer (1) e crie a conexão com seu banco dados e em seguida clique com o botão direito do mouse em Tables (2) e depois em Add New Table (3).

 

Inclua os campos da figura abaixo e salve a tabela com o nome de MEMBROS.

Clique no Solution Explorer e botão direito em cima de WebLINQ e Add New Item

Escolha LINQ to SQL Classes em Name digite o nome de sua base de dados (ou Northwind.dbml) e clique em Add.


Clique no Database Explorer na opção Tables e escolha a Tabela MEMBROS.
Arraste  e solte  dentro da classe Northwind.dbml (ou o nome da sua base de dados que você criou). Deve aparecer uma janela perguntando se você quer criar a pasta App_Code, responda que sim (Yes). 
Note que o arquivo Northwind.designer.cs foi criado de forma automática contendo todo o código necessario para manipular os objetos (tabelas) e os seus métodos (colunas). Imagine se você tivesse que escrever tudo isso?

Agora vamos até a pagina Default.aspx  e vamos criar um título, um label de mensagem, sete botões e um gridView.

 
Label
ID = lblTitulo
 Text = LINQ to SQL Sever
Label
ID = lblMsg
Text  = Clique em qualquer botão.
Button1
ID= btnSelect
 
Button2
ID= btnWhere
 
Button3
ID= btnOrderBy
 
Button4
ID= btnGroupBy
 
Button6
ID= btnInsert
 
Button7
ID= btnUpdate
 
Button8
ID= btnDelete
 
GridView
ID=gridDados
AutoFormat=Professional
 
No Solution Explorer clique em Default.aspx.cs e coloque todo o código abaixo:
 

using
System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
 
public partial class _Default : System.Web.UI.Page
{
    NorthWindDataContext db = new NorthWindDataContext();
 
    protected void Page_Load(object sender, EventArgs e)
    {
        // Aqui no Load nao carrego nada
        // Esse código foi escrito para efeito de teste
        // portanto não estou usando os tratamento de erros
        // (try, cath e finally) de forma adequada.
    }
 
    protected void Button1_Click(object sender, EventArgs e)
    {
        /* Botão Select
         * Observe que o nome das colunas são trocados em tempo de execução
         */
 
        // var dados = from p in db.MEMBROs
        //             select new { Id = p.id_membro, Nome= p.ds_membro, Sexo = p.sx_membro };
       
 
        /* Outra forma do comando Select usando lambda */
        var dados = db.MEMBROs.Select(
            p => new  { Id = p.id_membro, Nome = p.ds_membro, Sexo = p.sx_membro }
            );
                
        gridDados.DataSource = dados;
        gridDados.DataBind();
        lblMsg.Text  = "Lista todos os Nomes.";
    }
   
    protected void Button2_Click(object sender, EventArgs e)
    {
      
            /* Botão Where
             * Usando a clausula where no LINQ
             * Seleciono somente sexo Feminino
             */
            var dados = from p in db.MEMBROs
                        where p.sx_membro == 'F'
                        select new { Id = p.id_membro, Nome = p.ds_membro, Sexo = p.sx_membro };
          
            gridDados.DataSource = dados;
            gridDados.DataBind();
 
            lblMsg.Text  = "Lista somente os registros com sexo = F";
 
    }
 
    protected void Button3_Click(object sender, EventArgs e)
    {
        /* Botão Order By
         * Usando a clausula orderby no LINQ */
 
        var dados = from p in db.MEMBROs
                    orderby p.ds_membro
                    select new { Nome = p.ds_membro, Sexo = p.sx_membro, Id = p.id_membro };
 
        gridDados.DataSource = dados;
        gridDados.DataBind();
        lblMsg.Text = "Classifica por Nome.";
    }
 
 
    protected void Button4_Click(object sender, EventArgs e)
    {
        /* Botão Group BY
         * Usando a clausula Insert no LINQ */
 
        var dados = from p in db.MEMBROs
                    group  p by p.sx_membro  into Group
                    select new { sx_membro = Group.Key, };
 
        gridDados.DataSource = dados;
        gridDados.DataBind();
 
        lblMsg.Text = "Agrupa por Sexo.";
    }
 
 
    protected void Button6_Click(object sender, EventArgs e)
    {
        /* Botão Insert
         */
 
        try
        {
            MEMBRO memb = db.MEMBROs.First(p => p.id_membro == 36);
            lblMsg.Text = "O Id = 36 já foi inserido. Use o botão Delete";
        }
        catch
        {
            var NovoMembro = new MEMBRO
            {
                id_esp = 2,
                id_membro = 36,
                sx_membro = 'M',
                ds_membro = "Jose da Silva"
            };
 
            db.MEMBROs.InsertOnSubmit(NovoMembro);
            db.SubmitChanges();
            lblMsg.Text = "O Nome Jose da Silva foi inserido com Id = 36.";
        }
        finally
        {
           
        }
 
        // Mostra classificado por ID descedente
        var dados = from p in db.MEMBROs
                    orderby p.id_membro descending
                    select new { Id = p.id_membro, Nome = p.ds_membro, Sexo = p.sx_membro };
 
        gridDados.DataSource = dados;
        gridDados.DataBind();
    }
 
    protected void Button7_Click(object sender, EventArgs e)
    {
        /* Botão Update
         */
 
        try
        {
            MEMBRO memb = db.MEMBROs.First(p => p.id_membro == 36);
            // memb.id_membro = 36;
 
            // Troco o nome do membro caso o botão Update
            // seja pressionado mais de uma vez.
 
            if (memb.ds_membro == "Maria Fogueteira")
            {
                memb.ds_membro = "Jose da Silva";
                memb.sx_membro = 'M';
                lblMsg.Text = "O Id = 36 foi alterado para Jose da Silva.";
 
            }
            else
            {
                memb.ds_membro = "Maria Fogueteira";
                memb.sx_membro = 'F';
                lblMsg.Text = "O Id = 36 foi alterado para Maria Fogueteira.";
            }
 
           
            db.SubmitChanges();
        }
        catch
        {
            lblMsg.Text = "Primeiro clique no botão Insert, para incluir um novo registro.";
        }
        finally
        {
           
        }
 
        var dados = from p in db.MEMBROs
                    orderby p.id_membro descending
                    select new { Id = p.id_membro, Nome = p.ds_membro, Sexo = p.sx_membro };
 
        gridDados.DataSource = dados;
        gridDados.DataBind();
   
    }
 
    protected void Button8_Click(object sender, EventArgs e)
    {
        /* botão Delete
         */
 
        try
        {
            MEMBRO memb = db.MEMBROs.First(p => p.id_membro == 36);
            if (memb.id_membro == 36)
            {
                db.MEMBROs.DeleteOnSubmit(memb);
                db.SubmitChanges();
                lblMsg.Text = "O Id = 36 foi excluído";
               
            }
 
        }
        catch
        {
            lblMsg.Text = "O registro Id = 36 já foi excluído. Use o botão Insert";
        }
 
 
        var dados = from p in db.MEMBROs
                    orderby p.id_membro descending
                    select new { Id = p.id_membro, Nome = p.ds_membro, Sexo = p.sx_membro };
      
        gridDados.DataSource = dados;
        gridDados.DataBind();
    }
}
 
 

Edite o arquivo Web.Config e verifique se a string de conexão está de acordo com a configuração de seu computador.
 

<
connectionStrings>
<add name="TegoConnectionString"
            connectionString="Data Source=TOSHIBA105;Initial Catalog=Tego;Integrated Security=True"
            providerName="System.Data.SqlClient"/>
</connectionStrings>
 

name = Nome de sua string de conexão
Data Source = localhost ou o nome de seu servidor
Initial Catalog = Nome de sua base de dados
  

Clique em File/Save All para salvar o Projeto. No Menu Build, clique em Rebuild Web Site.
Se tudo deu certo a janela OutPut deve parecer conforme abaixo:
 
------ Rebuild All started: Project: C:\VS2008\WebLINQ\, Configuration: Debug Any CPU ------

Validating Web Site

Criando o diretório '/WebLINQ/App_Code/'.

Criando o diretório '/WebLINQ/'.

Validation Complete

========== Rebuild All: 1 succeeded, 0 failed, 0 skipped ==========
 

 
Tecle F5 para ver o resultado ou no menu use Debug/Start Debugging.



 
Entrar em Contato com Assis. Assis é analista de sistemas sênior há mais de 20 anos. Trabalhou em projetos de automação em empresas de médio e grande porte. Atualmente ocupa a função de analista de suporte sênior na maior instituição financeira do país e quando tem alguma folga adora praticar surf, geralmente em Cabo Frio e Barra da Tijuca-RJ. Postado em 02/03/2009.

Execute esse exemplo agora.
Print  

PatrocíniosMinimize

AnúnciosMinimize
Print  

 
HomeFotosLinksCursosRefletirHistóricoProjetosDownloadsSobreFale Conosco
 
Copyright 1998-2010 by Softwise Consultoria e InformáticaTerms Of UsePrivacy Statement