6

Uso EntityFramework POCO + proxies + carga lenta en mi proyecto. Hoy estuve bastante sorprendido de ver que la clase Transaction tiene su colección relacionada Rows materializada en HashSet (en lugar de EntityCollection). Necesito EntityCollection para rastrear cambios en la colección.Entity Framework - ICollection relacionado se materializa en HashSet

public class Transaction 
{ 
    public virtual ICollection<TransactionRow> Rows { get; set; } 
} 

Sin embargo otras clases de entidad tienen su colección relacionada materializó en EntityCollection.

Estoy cargando el Transaction a través de ObjectQuery, por lo que debería estar en el contexto. El proxy para el objeto también se crea.

¿Alguien podría decir - cómo Entity Framework decide qué usar - HashSet o EntityCollection? ¿Por qué algo se convierte en HashSets?

Respuesta

2

Cambio proxy de rastreo se crea sólo cuando se cumplen estas dos condiciones:

  • clase POCO es público, no selladas y no abstracta
  • Todo propiedades (con get y set) persistieron son marcado como virtual
+0

Ouch, acabo de inspeccionar la clase una vez más y me di cuenta de que la colección no estaba marcada como virtual :) ¡Gracias por la pista! – Jefim