C# 在NHibernate中使用HashSet时集合不能为null异常
我的NHibernate实体中有以下内容: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,说“集
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();