BT

Entity Framework 7: Propriedades shadow

| por Jonathan Allen Seguir 595 Seguidores , traduzido por Luis Cesar Barreto Seguir 28 Seguidores em 15 set 2015. Tempo estimado de leitura: 1 minuto |

Propriedades shadow são campos que não existem na própria classe, porém são tratadas como se fossem pelo Entity Framework. Elas podem utilizadas em operações de consultas, no momento de salvar ou atualizar um registro e também em migrações de banco de dados. A Microsoft previu dois cenários principais na utilização dessa propriedade:

  • Permitir que a camada de acessos aos dados trabalhe com propriedades que não podem ser visualizadas via modelo para o restante da aplicação;
  • Permitir aos desenvolvedores de forma eficaz, adicionar propriedades de uma classe que não possuem o código.

As propriedades Shadow são definidas no evento OnModelCreating, que é exposto como um método de substituição no DBContext. O exemplo a seguir mostra como incluir uma propriedade DateTime chamada LastUpdated a entidade Blog:

protected override void OnModelCreating(ModelBuilder modelBuilder){
	modelBuilder.Entity().Property("LastUpdated");
}

Um caso de uso comum para essa propriedade é configurar automaticamente a propriedade LastUpdated no momento em que é executada uma operação de salvar um registro. Para fazer isso, pode-se utilizar DBContex.ChangeTracker para pegar a lista de objetos do DBEntry. A seguir o código de exemplo:

foreach (var item in modifiedEntries){
	Item.Property("LastModified").CurrentValue = DateTime.Now;
}

Geralmente isso seria feito substituindo o método SaveChanges() na classe DBContext. Ao inserí-lo dessa maneira, elimina-se a possibilidade de inclusão em alguns, porém não necessariamente em todos os lugares na atualização de registros.

Enquanto que ChangeTracker é muito bom para modificar eventos durante o processo de salvar o registro, haverá momentos em que será possível acessar as propriedades shadow sem utilizar diretamente o DBEntry. Isso poderá ser feito utilizando a função EF.Property, como pode ser observado a seguir:

EF.Property(entity, "LastModified")

Essa expressão pode ser inserida dentro de uma consulta para gerar cláusulas Where e Order By.

É possível aprender mais sobre esse recurso assistindo o vídeo Shadow Properties no Entity Framework 7, no Channel 9 da Microsoft.

Avalie esse artigo

Relevância
Estilo/Redação

Olá visitante

Você precisa cadastrar-se no InfoQ Brasil ou para enviar comentários. Há muitas vantagens em se cadastrar.

Obtenha o máximo da experiência do InfoQ Brasil.

Dê sua opinião

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão
Comentários da comunidade

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

Dê sua opinião

Faça seu login para melhorar sua experiência com o InfoQ e ter acesso a funcionalidades exclusivas


Esqueci minha senha

Follow

Siga seus tópicos e editores favoritos

Acompanhe e seja notificados sobre as mais importantes novidades do mundo do desenvolvimento de software.

Like

Mais interação, mais personalização

Crie seu próprio feed de novidades escolhendo os tópicos e pessoas que você gostaria de acompanhar.

Notifications

Fique por dentro das novidades!

Configure as notificações e acompanhe as novidades relacionada a tópicos, conteúdos e pessoas de seu interesse

BT