Só para saber qual melhor forma com FK e classes POCO

26/08/2013

0

Quando eu uso uma FK com EF em uma classe POCO, normalmente eu faço assim:

public virtual Classe_Entidade nome(que sempre ponho o nome da classe entidade), assim:

public virtual Endereco Endereco {get; set; }

Mas já casos que se coloca um atributo do tipo Foreign Key e o usual assim:

[Foreign Key]

public int Meu_Campo_Estrangeiro { get; set; }

A pergunta é: Há diferença entre uma forma e outra, ou seja, melhor performance e etc ou não, ambas dão o mesmo resultado esperado.
Pjava

Pjava

Responder

Posts

27/08/2013

Joel Rodrigues

Se analisarmos, veremos que ambas as formas possuem seus pontos positivos e negativos. Por exemplo:
Usando a primeira forma:
(-) Ao carregar um objeto, essa propriedade complexa que também é um objeto será carregada. Assim, isso tende a consumir mais recursos (óbvio);
(+) Se você tem essa propriedade complexa (chave estrangeira), certamente vai precisar dos detalhes dela em algum momento. Aí você já teria todas as informações armazenadas em um objeto interno ao objeto principal (as informações do Endereco, por exemplo, aí você poderia facilmente usar obj.Endereco.Rua, etc).

Usando a segunda forma:
(+) Ao carregar um objeto, apenas um campo simples será carregado (um int, por exemplo), o que tende a ser mais rápido.
(-) Quando você precisar dos detalhes da chave estrangeira (Rua, Bairro, etc), você terá que localizar esses detalhes em outra tabela. Para isso, terá de fazer algum tipo de filtro (Find, Where, etc), instanciar um objeto e ler suas propriedades.

Na prática, porém, a diferença de desempenho pode ser muito pouca, mas em termos de praticidade e de organização, a primeira forma é mais adequada.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar