Em continuação à série LINQ to SQL, nesse post veremos como fazer query dos dados em banco e o bind diretamente em controles ASP.NET. Nesse exemplo iremos:
- Codificar o método que retornará um objeto produto;
- Codificar o preenchimento do objeto na UI
Query em registros únicos
Na classe beProduto.cs crie o método para recuperar um produto específico. Segue abaixo o código:
public Produto RecuperarProduto(int idProduto)
{
BlogLinqDemoDataContext bd = new BlogLinqDemoDataContext();
try
{
Produto oProduto = bd.Produtos.Single(p => p.ProdutoID == idProduto);
return oProduto;
}
catch (InvalidOperationException)
{
throw new ApplicationException(“Produto não encontrado !”);
}
}
Com apenas 3 linhas de código é possível fazer a recuperação do objeto. Veja que se o objeto não foi localizado, o .net dispara uma exceção do tipo InvalidOperationException que poderá ser tratada e exibida a mensagem de produto inexistente.
Antes mesmo de eu explicar todos vocês já deviam ter adivinhado, inclusive no post anterior, que estamos fazendo uma query na tabela de Produtos pois o código é muito intuitivo. Essa é a idéia do LINQ, fazer ser simples algo que antes costumava dar um trabalho que sempre era repetitivo.
Em seguida, codifique a UI para recuperar e exibir o objeto:
protected void btBuscar_Click(object sender, EventArgs e)
{
beProduto beoProduto = new beProduto();
try
{
Produto oProduto = beoProduto.RecuperarProduto(Convert.ToInt32(txtCodigoProduto.Text));
txtDescricao.Text = oProduto.Descricao;
txtValor.Text = oProduto.Valor.ToString(“N”);
ddlCategoria.SelectedValue = oProduto.CategProdID.ToString();
}
catch (Exception ex)
{
lblerro.Text = ex.Message;
}
}
Dessa forma é possível fazer a recuperação do objeto e exibição dele nos controles. Veja que para acessar a categoria do produto eu fiz acesso à propriedade CategProdID do objeto Produto.
Fiquem atentos com a continuidade dessa série e execute os exemplos passo-a-passo pois é a melhor forma de aprender, fazendo na prática 🙂
Até o próximo post e aguardo comentários [Y]