Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在NHibernate中使用HashSet时集合不能为null异常_C#_Nhibernate_Fluent Nhibernate_Nhibernate Mapping - Fatal编程技术网

C# 在NHibernate中使用HashSet时集合不能为null异常

C# 在NHibernate中使用HashSet时集合不能为null异常,c#,nhibernate,fluent-nhibernate,nhibernate-mapping,C#,Nhibernate,Fluent Nhibernate,Nhibernate Mapping,我的NHibernate实体中有以下内容: private ICollection<string> _stringSet = new HashSet<string>(); public virtual ICollection<string> StringSet { get { return _stringSet; } } 不幸的是,当我试图保存实体时,我得到一个ArgumentNullException,说“集

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

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

不幸的是,当我试图保存实体时,我得到一个
ArgumentNullException
,说“集合不能为null”。如果我将字段默认为列表,我不会得到此错误,但正如您在映射中看到的,我想要设置行为,即使是来自未保存的实体。在我看来,
HashSet
没有实现非泛型的
ICollection
是个问题。为未保存的实体设置行为的正确方法是什么?我还希望保留
I收集
作为我的公开类型。

Aha。我以为我已经去掉了所有的Fluent约定,但显然有一个集合约定将其设置为.AsBag()。一旦删除该约定,它将按预期工作,尽管.AsSet()没有覆盖.AsBag()约定似乎是一个bug(或至少是意外行为)。

您能发布整个stacktrace吗?啊哈。我以为我已经去掉了所有的Fluent约定,但显然有一个集合约定将其设置为.AsBag()。一旦删除约定,它将按预期工作,尽管.AsSet()没有覆盖.AsBag()约定似乎是一个bug(或至少是意外行为)。请随意回答您自己的问题并将其标记为已接受。显然,我没有足够的代表回答我自己的问题,遗憾的是,你只需要等8个小时就可以用少于100的代表回答你自己的问题。
    HasMany(x => x.StringSet)
        .Table("String_Set")
        .Element("StringValue")
        .AsSet();