У меня возникла проблема при попытке перехода с 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! Таким образом, кому-то удается вернуть поле только для чтения на ноль, даже после того, как поле было назначено.
Есть идеи?