Série LINQ to SQL Parte 3 – Inserindo registros no Banco de Dados SQL Server

Continuando a série LINQ to SQL , nesse post iremos incluir um registro de Produto na Base de Dados SQL Server utilizando LINQ.

Crie uma nova página por nome /LINQ/Cadastro.aspx e desenho seu layout conforme mostra figura abaixo:

Após a criação da Página, crie duas classes na pasta App_Code do seu WebSite por nomes beProduto.cs e beCategoriaProduto.cs

Codifique a classe beProduto.cs conforme mostra o código abaixo:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

/// <summary>
/// Summary description for beProduto
/// </summary>

public class beProduto
{
      public beProduto()
      {
            //
            // TODO: Add constructor logic here
            //
      }
    public void GravarProduto(Produto oProduto)
    {
        BloqLinqDemoDataContext bd = new BloqLinqDemoDataContext();
        bd.Produtos.InsertOnSubmit(oProduto);
        bd.SubmitChanges();
    }
}

Veja que é criado um método que recebe um objeto do tipo Produto por parâmetro. Essa classe Produto é a própria classe criada pelo LINQ no momento da modelagem.
O objeto bd representa a conexão com o banco de dados e é representado também pela classe BlogLinqDemoDataContext. Se você abrir a classe BlogLinqDemoDataContext vai ver que o construtor padrão acessa a chave de conexão no web.config. O método InsertOnSubmit() configura uma operação de INSERT na query que será montada pelo LINQ, Já o método SubmitChanges() executa no banco de dados todas as operações processadas pelo LINQ que você tenha programado. Isso quer dizer que você pode executar diversas operações (INSERT, UPDATE, DELETE) e enviar as alterações de uma só vez para o banco de dados através do método SubmitChanges().

Em seguida codifique a classe beCategoriaProduto.cs conforme mostra o código abaixo:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

/// <summary>
/// Summary description for beCategoriaProduto
/// </summary>
public class beCategoriaProduto
{
      public beCategoriaProduto()
      {
            //
            // TODO: Add constructor logic here
            //
      }
    public List<CategoriaProduto> ListarTodasCategorias()
    {
        BloqLinqDemoDataContext bd = new BloqLinqDemoDataContext();
        var query = from c in bd.CategoriaProdutos
                    select c;

        return query.ToList();

    }
} 

Como você pode ver estamos fazendo uma query na tabela  CategoriaProdutos e retornando TODOS os registros. O resultado da query é transformada numa lista Generics List<CategoriaProduto>.
Agora na camada de apresentação, ou UI (User Interface), faremos a chamada para os métodos da camada de negócio, ou BE (Business Layer) para o preenchimento da lista de categorias e gravação do Produto. Sendo assim, faremos:

  1. Preenchimento da DropDownList de Categorias de Produtos;
  2. Código do botão Inserir que vai preparar o objeto para ser persistido;

Segue abaixo o código para preenchimento da DropDownList de Categorias:

protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            beCategoriaProduto oCategProduto = new beCategoriaProduto();
            ddlCategoria.DataSource = oCategProduto.ListarTodasCategorias();
            ddlCategoria.DataTextField = “Descricao”;
            ddlCategoria.DataValueField = “CategProdID”;
            ddlCategoria.DataBind();

            ddlCategoria.Items.Insert(0, new ListItem(“Selecione …”, “”));
        }
    }

Em seguida, codifique o método do botão Inserir:

protected void btIncluir_Click(object sender, EventArgs e)
    {
        try
        {
            //preenche o objeto Produto
            Produto oProduto = new Produto();
            oProduto.Descricao = txtDescricao.Text;
            oProduto.Valor = Convert.ToDecimal(txtValor.Text);
            oProduto.CategProdID = Convert.ToInt32(ddlCategoria.SelectedValue);

           
beProduto produto = new beProduto();
            produto.GravarProduto(oProduto);

            lblerro.Text = “Registro incluído com sucesso”;
        }
        catch (Exception ex)
        {
            lblerro.Text = ex.Message;
        }
    }

Execute a aplicação exemplo e debugue o código. Veja que tudo está mais claro e simples de entender. Não precisamos nos preocupar com síntaxe SQL, nem mesmo manipular os nativos objetos SqlCommand, SqlConnection, DataTable, etc.

Com certeza, o uso do LINQ tratá muita produtividade para as equipes de desenvolvimento de software.

Na próxima parte dessa série, veremos como criar querys com parâmetros, joins, group by exibindo as informações em controles ASP.NET, é claro [Y]

Até lá !!!

 

Leave a Reply

Your email address will not be published. Required fields are marked *