Curso Entity Framework - Atualizando uma entidade no cenário desconectado - XX
Nesta aula vou mostrar como atualizar uma entidade no cenário desconectado que atualiza uma linha na tabela do banco de dados.(aula anterior) |
Podemos usar 3 abordagens para realizar a tarefa de atualizar dados de uma entidade.
Se você desejar usar a abordagem DataBase-First então pode criar um Entity Data Model para o banco de dados EscolaDB.mdf definido na aula 2 : Entity Framework - Configurando o Ambiente - II
Se você usar a abordagem Code-First ou Model-First então deverá criar as entidades e classes de contexto com base no mesmo banco de dados.
Nesta aula vamos atualizar a entidade Aluno que foi definida com o seguinte código:
namespace EF6_EscolaDB
{
using System;
using System.Collections.Generic;
public partial class Aluno
{
public Aluno()
{
this.Cursos = new HashSet<Curso>();
}
public int AlunoId { get; set; }
public string AlunoNome { get; set; }
public int PadraoId { get; set; }
public virtual Padrao Padrao { get; set; }
public virtual AlunoEndereco AlunoEndereco { get; set; }
public virtual ICollection<Curso> Cursos { get; set; }
}
}
|
A seguir temos o código da classe de Contexto :
namespace EF6_EscolaDB
{
using System;
using System.Data.Entity;
using System.Data.Entity.Infrastructure;
public partial class EscolaDBEntities : DbContext
{
public EscolaDBEntities()
: base("name=EscolaDBEntities")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
public virtual DbSet<Aluno> Alunos { get; set; }
public virtual DbSet<AlunoEndereco> AlunoEnderecos { get; set; }
public virtual DbSet<Curso> Cursos { get; set; }
public virtual DbSet<Padrao> Padraos { get; set; }
public virtual DbSet<Professor> Professores { get; set; }
}
}
|
Preparando o ambiente
Vamos usar a solução criada na aula 11 - Entity Framework - Consultas Projeção - EF6_EscolaDB - para mostrar como atualizar uma entidade no cenário desconectado.
Abra a solução EF6_EscolaDB e a seguir clique no menu FILE -> Add -> New Project;
Selecione a linguagem Visual C# e o template Console Application e informe o nome EF6_AtualizaEntidades :
A seguir inclua uma referência neste projeto ao projeto EF6_EscolaDB e atualize também o arquivo App.Config com a string de conexão para a entidade.
Atualizando uma entidade Aluno
Neste exemplo usamos o método Entry() para marcar a entidade que foi modificada fora do contexto como modificada (Modified).
Para persistir os dados no banco de dados usamos o método SaveChanges().
Nota : O método Entry obtém um objeto DbEntityEntry para a entidade fornecendo o acesso às informações sobre a entidade e a capacidade de executar ações na entidade.
A seguir código usado para realizar a atualização de uma entidade Aluno :
static void AtualizandoEntidadeSimples()
{
Aluno _aluno;
//1. Pega o aluno do DB
using (var ctx = new EscolaDBEntities())
{
_aluno = ctx.Alunos.Where(a => a.AlunoNome == "Macoratti").FirstOrDefault<Aluno>();
}
//2. Altera o nome do aluno no modo desconectado (fora do escopo do contexto ctx)
if (_aluno != null)
{
_aluno.AlunoNome = "Macoratti Atualizado";
}
//salva a entidade modificada usando o novo contexto
using (var dbCtx = new EscolaDBEntities())
{
//3. Marca a entidade como modificada
dbCtx.Entry(_aluno).State = System.Data.Entity.EntityState.Modified;
//4. chama o método SaveChanges
dbCtx.SaveChanges();
}
}
|
A seguir temos a sequência das operações realizadas :
O método DBContext.Entry retorna um instância de DBEntityEntry para uma entidade especificada e a classe DbEntityEntry fornece o acesso à informação sobre a entidade e seu estado.
Na
próxima aula veremos como
deletar uma entidade simples em um cenário desconectado
no Entity Framework.
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
|
Gostou ?
Compartilhe no Facebook
Compartilhe no Twitter
Referências: