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: