2

当我尝试在 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。

有任何想法吗?

4

0 回答 0