DbEntityEntry – Capturando os dados originais de uma entidade

Olá,

Hoje vamos discutir sobre um recurso muito útil do Entity Framework 5, o DbEntityEntry. Instâncias desta classe fornecem acesso a informações das entidades controladas pelo DbContext.

Mas que tipo de informação é gerenciada pela DbEntityEntry?

Com uma instância ativa de DbEntityEntry podemos recuperar os dados originais de uma entidade (aqueles mesmos dados de quando recuperamos a instância do banco de dados), podemos atualizar a instância com os dados ativos na base de dados, podemos forçar a execução das rotinas de validação, alterar o status de uma entidade, além de outras ações.

Vou demonstrar como recuperar os dados originais de uma entidade. Para isso faremos uma consulta na base de dados retornando o primeiro registro da base de dados, em seguida vamos alterar os valores de duas propriedades, para demonstrar a consulta dos dados originais da entidade funcionando. Depois disso vamos reter uma instância de DbEntityEntry, ela irá conter todos os dados necessários para consultamos informações das entidades controlados pelo DbContext. Logo em seguida acessaremos os valores originais da entidades (os mesmos valores de quando a recuperamos do banco de dados) e então executaremos o método “ToObject()”, este método irá construir uma instância da classe com a qual estamos trabalhando. Todos estes aspectos podem ser vistos logo abaixo:

using (Contexto dataBase = new Contexto())
{
    Usuario usuarioComAlteracoes = dataBase.Usuarios.First();

    usuarioComAlteracoes.Nome = "**********";
    usuarioComAlteracoes.Email = "**********";

    var entryUsuario = dataBase.Entry<Usuario>(usuarioComAlteracoes);

    Usuario usuarioSemAlteracoes = (Usuario)entryUsuario.OriginalValues.ToObject();

    Console.WriteLine("Nome original: {0} - Nome alterado: {1}",
                        usuarioSemAlteracoes.Nome,
                        usuarioComAlteracoes.Nome);
    Console.WriteLine("Email original: {0} - Email alterado: {1}",
                        usuarioSemAlteracoes.Email,
                        usuarioComAlteracoes.Email);
}

Esta foi uma breve explicação sobre o funcionamento da classe DbEntityEntry, mas pode notar que muitos recursos do Entity Framework com o uso da DbContext API estão vinculados ao funcionamento desta classe. Vale a pena estudar seus recursos.

Por

Fernando Henrique Inocêncio Borba Ferreira

Microsoft Most Valuable Professiona – Data Plaftorm Development

Publicidade

Um comentário sobre “DbEntityEntry – Capturando os dados originais de uma entidade

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.