Коллекция не может быть пустым исключением при использовании HashSet в NHibernate - PullRequest
5 голосов
/ 13 июля 2011

В моей сущности NHibernate есть следующее:

    private ICollection<string> _stringSet = new HashSet<string>();
    public virtual ICollection<string> StringSet
    {
        get { return _stringSet; }
    }

Затем в моем отображении Fluent я отображаю это так:

    HasMany(x => x.StringSet)
        .Table("String_Set")
        .Element("StringValue")
        .AsSet();

К сожалению, когда я пытаюсь сохранить сущность, я получаю ArgumentNullException, говорящее «Коллекция не может быть нулевой». Я не получаю эту ошибку, если по умолчанию мое поле равно списку, но, как вы видите в моем отображении, я хочу установить поведение даже из несохраненной сущности. Мне кажется, это проблема с HashSet<>, не реализующим неуниверсальный ICollection. Как правильно установить поведение Set для несохраненных объектов? Я также предпочел бы сохранить ICollection<string> в качестве моего открытого типа.

1 Ответ

5 голосов
/ 14 июля 2011

Aha. Я думал, что отбросил все условные обозначения Fluent, но, видимо, было соглашение о коллекции, устанавливающее его в .AsBag (). Работает, как и ожидалось, после удаления соглашения, хотя кажется ошибкой (или, по крайней мере, неожиданным поведением), что .AsSet () не переопределяет соглашение .AsBag ().

...