问题
I use EntityFramework POCO + proxies + lazy loading in my project. Today I was pretty surprized to see that the class Transaction
has its related collection Rows
materialized into HashSet
(instead of EntityCollection
). I need EntityCollection
for tracking changes in the collection.
public class Transaction
{
public virtual ICollection<TransactionRow> Rows { get; set; }
}
However other entity classes have their related collection materialized into EntityCollection
.
I am loading the Transaction
through ObjectQuery
, so it should be in the context. The proxy for the object is also created.
Could anyone tell - how does Entity Framework decide what to use - HashSet or EntityCollection? Why some thing become HashSets?
回答1:
Change tracking proxy is created only when these two conditions are met:
- POCO class is public, non-sealed and non-abstract
- All persisted properties (with getter and setter) are marked as virtual
来源:https://stackoverflow.com/questions/3624701/entity-framework-related-icollection-getting-materialized-into-hashset