C#
- CRUD básico com Entity Framework para iniciantes - II
Na primeira parte deste artigo eu criei o projeto no Visual Studio 2010 e criei o Entity Data Model usando a nossa fonte de dados para gerar o mapeamento ORM.
Vou mostrar agora como acessar os dados e efetuar a navegação e as operações CRUD(Create, Update, Delete) na fonte de dados.
Acessando os dados e realizando as operações CRUD
No evento Load do formulário form1.cs vamos incluir o código a seguir:
private void Form1_Load(object sender, EventArgs e)
{
contextoDados = new CadastroEntities();
estadoLista = new List<ESTADO>();
ObjectQuery<ESTADO> estadoConsulta = contextoDados.Estados.Where("it.sigla <> 'nada'");
estadoLista = estadoConsulta.ToList();
gdvEstados.DataSource = estadoConsulta.ToList();
MessageBox.Show(estadoConsulta.ToTraceString());
PreencheCampos();
}
|
Este código cria uma nova instância do nosso contexto e realizar uma consulta para obter os objetos da entidade ESTADO armazenado-os em seguida na lista genérica estadoLista.
Em seguida os mesmos são exibidos no controle DataGridView para exibir a lista de estados e também chamamos a rotina preencheCampos() que exibe os valores nos controles do formulário.
A rotina preenche campos apenas obtém os valores da lista genérica estadoLista e os exibe nos controles TextBox do formulário;
private void PreencheCampos()
{
ESTADO estadoAtual = estadoLista[indiceAtualEstado];
txtID.Text = estadoAtual.id.ToString();
txtSigla.Text = estadoAtual.sigla;
txtEstado.Text = estadoAtual.nome;
//articleCountLabel.Text = currentAuthor.Article.Count.ToString();
//authorIDLabel.Text = currentAuthor.AuthorID.ToString();
}
|
A seguir teremos o código relacionado com cada evento Click dos botões para efetuar a navegação pelos objetos da lista representando a navegação pelos registros da tabela Estados do banco de dados;
1- Botão Primeiro << - vai para o primeiro registro:
private void btnPrimeiro_Click(object sender, EventArgs e)
{
indiceAtualEstado = 0;
PreencheCampos();
}
|
2- Botão Anterior < - retorna para o registro anterior:
private void btnAnterior_Click(object sender, EventArgs e)
{
if (indiceAtualEstado == 0)
{
MessageBox.Show("Não há mais estados");
}
else
{
indiceAtualEstado -= 1;
PreencheCampos();
}
}
|
3- Botão Próximo > - vai para o próximo registro:
private void btnProximo_Click(object sender, EventArgs e)
{
if (indiceAtualEstado == estadoLista.Count - 1)
{
MessageBox.Show("Fim de estados");
PreencheCampos();
}
else
{
indiceAtualEstado += 1;
PreencheCampos();
}
}
|
4- Botão Úlitmo >> - vai para o último registro:
private void btnUltimo_Click(object sender, EventArgs e)
{
indiceAtualEstado = estadoLista.Count - 1;
PreencheCampos();
}
|
No código usado acima estou usando a lista genérica para verificar a posição do registro e a rotina preencheCampos() para exibir os registros no formulário.
No evento Click do botão Atualizar temos o código a seguir que atualiza os objetos com os valores informados nos controles de formulário:
private void btnAtualizar_Click(object sender, EventArgs e)
{
ESTADO estadoAtual = estadoLista[indiceAtualEstado];
estadoAtual.sigla = txtSigla.Text;
estadoAtual.nome = txtEstado.Text;
}
|
O código do botão Novo solicita a confirmação do cliente para incluir um novo objeto no contexto do objeto atual;
private void btnNovo_Click(object sender, EventArgs e)
{
if (MessageBox.Show("Confirma inclusão do registro ?", "Estados", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)
{
limparCampos();
ESTADO novoEstado = new ESTADO();
novoEstado.sigla = txtSigla.Text;
novoEstado.nome = txtEstado.Text;
novoEstado.id = -1; //para deixar claro que um novo estado
estadoLista.Add(novoEstado);
contextoDados.AddToEstados(novoEstado);
indiceAtualEstado = estadoLista.Count - 1; //Define o indice para último item do novo item
PreencheCampos();
}
}
|
Para limpar os campos do formulário temos a rotina limparCampos() a seguir:
private void limparCampos()
{
txtSigla.Text = string.Empty;
txtEstado.Text = string.Empty;
txtID.Text = "NOVO";
}
|
O código do botão Salvar usa o método SaveChanges() do contexto para persistir os objetos e os dados na fonte de dados
private void btnSalvar_Click(object sender, EventArgs e)
{
int linhasAfetadas = contextoDados.SaveChanges(true);
MessageBox.Show(linhasAfetadas.ToString() + " atualizações persistidas no banco de dados.");
PreencheCampos();
}
|
Veja abaixo o resultado da inclusão de alguns registros nos dois modos de exibição do formulário do projeto:
![]() |
![]() |
Dessa forma usamos o Entity Framework para realizar o mapeamento ORM em nossa fonte de dados e tratando com os objetos mapeados pudemos realizar as operações básicas de acesso e manutenção de dados.
Pegue o projeto completo aqui:
EF_Crud_Basico.zip
Aguarde mais artigos sobre o Entity Framework.
Referências: