Код EF Первое соглашение, позволяющее свойствам ICollection <T>быть пустыми коллекциями, а не нулевыми? - PullRequest
3 голосов
/ 07 декабря 2011

Я заметил, что по умолчанию Entity Framework Code First игнорирует создание экземпляров ICollection<T> свойств, если в коллекции нет хотя бы одного элемента. Я бы предпочел, чтобы коллекция гарантированно всегда была пустой HashSet (то есть HashSet с нулевыми элементами), а не null, если элементов нет.

Существуют ли какие-либо соглашения или настройки для EF Code First, которые позволили бы это?

1 Ответ

10 голосов
/ 07 декабря 2011

в конструкторе сущности просто установите экземпляр коллекции:

public sealed partial class EntityClass
{
    [SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors",
        Justification = "EF 4.1 requires them to be virtual, and RIA Services requires the collections to be instantiated.")]
    public EntityClass()
    {
        OtherEntities = new List<OtherEntity>();
    }

    public virtual ICollection<OtherEntity> OtherEntities { get; set; }
}

Для FXcop есть сообщение подавления.

...