BT

Disseminando conhecimento e inovação em desenvolvimento de software corporativo.

Contribuir

Tópicos

Escolha a região

Início Notícias Entity Framework 7: Propriedades shadow

Entity Framework 7: Propriedades shadow

Favoritos

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

Conteúdo educacional

BT