在NHibernate中使用HashSet时,Collection不能为null异常

Sta*_*t99 5 c# nhibernate nhibernate-mapping fluent-nhibernate

我的NHibernate实体中有以下内容:

    private ICollection<string> _stringSet = new HashSet<string>();
    public virtual ICollection<string> StringSet
    {
        get { return _stringSet; }
    }
Run Code Online (Sandbox Code Playgroud)

然后,在我的Fluent映射中,我将其映射为:

    HasMany(x => x.StringSet)
        .Table("String_Set")
        .Element("StringValue")
        .AsSet();
Run Code Online (Sandbox Code Playgroud)

不幸的是,当我尝试保存实体时,我得到一个ArgumentNullException说法"收集不能为空".如果我将我的字段默认为List,我不会收到此错误,但正如您在我的映射中所看到的,我想要Set行为,即使是来自未保存的实体.在我看来,HashSet<>没有实现非泛型的问题ICollection.为未保存的实体设置行为的正确方法是什么?我也希望保留ICollection<string>我的暴露类型.

Sta*_*t99 5

啊哈.我以为我已经删除了所有Fluent惯例,但显然有一个集合约定将它设置为.AsBag().一旦删除约定,就会按预期工作,尽管.AsSet()似乎没有覆盖.AsBag()约定的错误(或至少是意外的行为).