当我尝试从Castle ProxyFactoryFactory切换到NHibernate中的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更改为只读,问题仍然存在!因此,即使在分配了字段之后,有人也设法将只读字段设置为空。
有什么想法吗?