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

Entity Framework 4:Proxies – parte II

Olá pessoal, este é o segundo post falando sobre proxies no Entity Framework 4 CTP2. Desta vez vamos falar sobre o Change Tracking Proxy, este proxy é a nova opção do EF para manter o controle das alterações sofridas por um objeto.

   1: public class Contact

   2: {

   3:     public virtual Int32 ContactID { get; set; }

   4:     public virtual String Name { get; set; }

   5:     public virtual String Email { get; set; }

   6:     public virtual String Phone { get; set; }

   7:     public virtual String Address { get; set; }

   8:     public virtual Person Person { get; set; }

   9:     public virtual int PersonID { get; set; }

  10: }

Nós vimos este tipo de código no LazyLoading. Na parte I vimos que um requisito do Change TrackingProxy é a definição de todas as propriedades como virtuais.

 

Quando usamos este tipo de proxy uma nova entidade é criada em Runtime, esta entidade possui a mesma interface do nosso tipo, fazendo com que não seja necessário identificar se estamos usando ou não o proxy.

Image1

O tipo do objeto é composto da keyword DynamicProxies_TipoDoObjeto_Hash de identificação do objeto de contexto.

Quando usamos este tipo de proxy todas as ações do objeto mapeado são interceptadas pelo o EF que mantém o histórico e integridade do mesmo. No exemplo acima a criação do objeto foi realizada com o método CreateObject do objeto context.

 

   1: Contact c1 = ctx.CreateObject<Contact>();

   2: c1.PersonID = p.PersonID;

 

Quando estamos trabalhando com este tipo de proxy não podemos instanciar os objetos manualmente, uma opção de prevenção é declarar o construtor do tipo como privado.

 

Este excelente post do ADO.NET Team contém vários métodos que podem ser usados com o change tracking proxy

 

Download do codigo fonte

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