Entity Framework - связанная с ICollection материализация в HashSet

Я использую EntityFramework POCO + прокси + ленивую загрузку в своем проекте. Сегодня я был очень удивлен, увидев, что связанная с классом Transaction коллекция Rows материализована в HashSet (вместо EntityCollection). Мне нужно EntityCollection для отслеживания изменений в коллекции.

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

Однако другие классы сущностей имеют связанную коллекцию, материализованную в EntityCollection.

Я загружаю Transaction через ObjectQuery, так что это должно быть в контексте. Также создается прокси для объекта.

Может ли кто-нибудь сказать, как Entity Framework решает, что использовать - HashSet или EntityCollection? Почему некоторые вещи становятся HashSets?


person Jefim    schedule 02.09.2010    source источник


Ответы (1)


Прокси-сервер отслеживания изменений создается только при соблюдении следующих двух условий:

  • Класс POCO является общедоступным, незапечатанным и неабстрактным.
  • Все сохраняемые свойства (с геттером и сеттером) помечаются как виртуальные
person Ladislav Mrnka    schedule 03.09.2010
comment
Ой, я только что еще раз просмотрел класс и понял, что коллекция не помечена как виртуальная :) Спасибо за подсказку! - person Jefim; 13.09.2010