При использовании LinFu ProxyFactoryFactory в NHibernate вспомогательное поле для коллекции не указывается - PullRequest
2 голосов
/ 09 ноября 2011

У меня возникла проблема при попытке перехода с Castle ProxyFactoryFactory на LinFu ProxyFactoryFactory в NHibernate.

У меня есть такая сущность:

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();
     }
}

Отношение является двунаправленным и отображается как таковое на стороне Бар.

Проблема возникает, когда я вызываю метод AddBar. Коллекция _bars имеет значение null, и генерируется исключение NullReferenceException.

Проблема исчезнет, ​​если я переключусь обратно на Castle ProxyFactoryFactory.

Ошибка возникает не со всеми сопоставленными коллекциями, только с одним экземпляром.

Проблема по-прежнему возникает, даже если я изменю _bars на readonly! Таким образом, кому-то удается вернуть поле только для чтения на ноль, даже после того, как поле было назначено.

Есть идеи?

...