在NHibernate中使用LinFu ProxyFactoryFactory时,收集的后备字段为null

时间:2011-11-09 07:17:25

标签: nhibernate fluent-nhibernate linfu-dynamicproxy

当我尝试从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更改为只读,问题仍然存在!因此,即使在分配了字段之后,有人也设法将只读字段设置为空。

有什么想法吗?

0 个答案:

没有答案