Página Inicial > Entity Framework > Entity Framework 4:Proxies – parte I

Entity Framework 4:Proxies – parte I

Olá pessoal,no ultimo post da série sobre o Entity Framework 4 nós falamos sobre LazyLoading. Hoje o assunto será os diferentes tipos de proxies.

O EF 4 possui dois tipos de proxies, são eles:

  • LazyLoading proxy
  • Change Tracking proxy

A classe que serve para o mapeamento deve possuir as seguintes configurações:

  • Deve ser publica e não possuir a keywork sealed
  • Deve possuir um construtor sem parâmetros publico ou privado
  • Deve possuir propriedades publicas ou protegidas

LazyLoadingProxy

Este tipo de proxy é utilizado quando queremos usar lazyLoading em determinadas propriedades.Para este tipo de proxy funcionar basicamente precisamos habilitar o lazy Loading no Data Context e declarar a propriedade como virtual, e caso seja uma coleção a preferência é Icollection.

ctx.ContextOptions.LazyLoadingEnabled = true;
public virtual ICollection<Contact> Contacts { get; set; }

 

Change Tracking Proxy

Este tipo de proxy é o mais legal, pois a função dele é controlar as alterações nos objetos mapeados pelo EF.

Snapshot

O padrão de controle de alteração é conhecido como snapshot, este processo é assim chamado pois a cada query realizada uma cópia dos  valores do objeto é realizada.Quando chamamos um método para salvar as alterações uma comparação entre o estado atual e os snapshots é realizada. Este mecanismo pode levar ao armazenamento de muitos snapshots fazendo com que a memoria fique cheia.

 

Proxies

Quando o change tracking proxy é usado o objeto notifica diretamente o ObjectStateManager. Os proxies funcionam interceptando as alterações no objeto, para isso alguns passos devem ser seguidos:

  1. Todas as propriedades mapeadas devem ser declaradas virtuais e com escopo público ou protegido
  2. Coleções devem ser do tipo Icollection e devem possuir get e set

quando utilizamos este tipo e proxy um objeto é criado em tempo de execução, este objeto criado possui a mesma interface do objeto mapeado e outros membros para habilitar o change Tracking.

Usar este tipo de proxy possui algumas peculiaridades como a instanciação de um novo objeto ou até comparação de tipos visto que o objeto gerado possui apenas a mesa interface do objeto mapeado.

O proximo post será um exemplo de uso do Change Tracking proxy, quem quiser saber mais pode olhar aqui.

Author: higor.cesar Categories: Entity Framework Tags:
  1. Nenhum comentário ainda.
  1. Nenhum trackback ainda.