当我尝试在 NHibernate 中从 Castle ProxyFactoryFactory 切换到 LinFu ProxyFactoryFactory 时遇到问题。
我有一个这样的实体:
public class Foo
{
private ISet<Bar> _bars = new HashedSet<Bar>();
public virtual void AddBar(Bar bar)
{
if (!_bars.Contains(bar)
_bars.Add(bar);
bar.Foo = this;
}
}
这是用 Fluent NHibernate 映射的,如下所示:
public class FooDbMap : ClassMap<Foo>
{
public FooDbMap()
{
HasMany(x => x.Bars)
.Access.CamelCaseField(Prefix.Underscore)
.LazyLoad()
.KeyColumn("FooId")
.AsSet()
.Cache.ReadWrite();
}
}
这种关系是双向的,并且在 Bar 端也是如此映射的。
当我调用 AddBar 方法时会出现问题。_bars 集合为 null,并引发 NullReferenceException。
如果我切换回 Castle ProxyFactoryFactory,问题就会消失。
所有映射的集合都不会发生该错误,仅此一个实例。
即使我将 _bars 更改为只读,问题仍然存在!因此,即使在分配了该字段之后,也有人设法将只读字段设置回 null。
有任何想法吗?