6

J'utilise EntityFramework POCO + proxies + chargement paresseux dans mon projet. Aujourd'hui, j'ai été assez surpris de voir que la classe Transaction a sa collection connexe Rows matérialisée en HashSet (au lieu de EntityCollection). J'ai besoin de EntityCollection pour suivre les changements dans la collection.Entity Framework - related ICollection se matérialiser dans HashSet

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

Cependant, d'autres classes d'entités ont leur collection liée matérialisée dans EntityCollection.

Je suis en train de charger le Transaction à ObjectQuery, donc ce devrait être dans le contexte. Le proxy de l'objet est également créé.

Est-ce que quelqu'un pourrait dire - comment Entity Framework décide ce qu'il faut utiliser - HashSet ou EntityCollection? Pourquoi quelque chose devient HashSets?

Répondre

2

changement proxy de suivi est créé que lorsque ces deux conditions sont réunies:

  • classe POCO est publique, non scellée et non abstraite
  • Tous persistaient propriétés (avec getter et setter) sont marqué comme virtuel
+0

Ouch, je viens d'inspecter la classe une fois de plus et j'ai réalisé que la collection n'était pas marquée comme virtuelle :) Merci pour l'indice! – Jefim