gpt4 book ai didi

c# - 在 NHibernate 中使用 HashSet 时集合不能为空异常

转载 作者:太空狗 更新时间:2023-10-29 23:18:03 25 4
gpt4 key购买 nike

我的 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 .为未保存的实体设置行为的正确方法是什么?我也希望保留 ICollection<string>作为我的暴露类型。

最佳答案

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

关于c# - 在 NHibernate 中使用 HashSet 时集合不能为空异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6682741/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com