Olá pessoal, estou seguindo os passos do curso de Entity Framework 7 usando Windows Form Application com um formulário de cadastro ao invés de usar o console. Na busca por ID, estou tendo dificuldades de converter o número de ID digitado no textbox de pesquisa para que ao clicar no botão de busca, o Entity me traga o ID e preencha os campos. A solução compila mas dá erro ao realizar a busca. Porém, se eu passo o número diretamente como parâmetro, a busca funciona. No meu formulário FrmCadastro está assim:
private void tsbBuscar_Click(object sender, EventArgs e)
{
//Bomba bombaBuscadaPorID = bombaDAO.BuscaBombaPorId(int.Parse(tsbBuscar.Text)); <- compila mas da erro ao pesquisar.
//Bomba bombaBuscadaPorID = bombaDAO.BuscaBombaPorId(Convert.ToInt32(tsbBuscar.Text)); < -compila mas da erro ao pesquisar.
Bomba bombaBuscadaPorID = bombaDAO.BuscaBombaPorId(1); // <- funciona
if (bombaBuscadaPorID == null)
{
MessageBox.Show("Nenhum registro foi encontrado com o ID informado!");
}
else
{
tbBombaID.Text = bombaBuscadaPorID.ID.ToString();
cbBombaStatus.Text = bombaBuscadaPorID.Status_Bomba.ToString();
cbBombaFabricante.Text = bombaBuscadaPorID.Fabricante_Bomba.ToString();
cbBombaModelo.Text = bombaBuscadaPorID.Modelo_Bomba.ToString();
tbBombaNome.Text = bombaBuscadaPorID.Nome_Bomba.ToString();
cbBombaTipo.Text = bombaBuscadaPorID.Tipo_Bomba.ToString();
cbBombaMaterialVoluta.Text = bombaBuscadaPorID.Material_Voluta.ToString();
cbBombaEstagios.Text = bombaBuscadaPorID.Quantidade_Estagios.ToString();
tbBombaRotorMaximo.Text = bombaBuscadaPorID.Rotor_Maximo.ToString();
tbBombaRotorMinimo.Text = bombaBuscadaPorID.Rotor_Minimo.ToString();
cbBombaMaterialRotor.Text = bombaBuscadaPorID.Material_Rotor.ToString();
cbBombaNormaFlange.Text = bombaBuscadaPorID.Padrao_Flanges.ToString();
tbBombaTamanhoFlangeSuccao.Text = bombaBuscadaPorID.Diametro_Flange_Succao.ToString();
tbBombaTamanhoFlangeRecalque.Text = bombaBuscadaPorID.Diametro_Flange_Recalque.ToString();
}
}
Na classe DAO o método buscaPorID está parametrizado para receber um número int assim:
public Bomba BuscaBombaPorId(int id)
{
return this.contexto.Bombas.FirstOrDefault(b => b.ID == id);
}
No console application roda tudo fácil seguindo as aulas, mas confesso que algumas dificuldades extras aparecem ao tentar fazer com formulários. Gostaria de aproveitar e perguntar a vocês quais cursos aqui no Alura me recomendariam sobre boas práticas de refatoração, organizar o código em camadas (tipo este do entity onde o Renan dá as dicas de criar classes do DAO separadas, etc), estou iniciando em C# com windows forms pois tenho o objetivo de criar uma aplicação neste cenário. Agradeço desde já por qualquer ajuda! Abraços!