Кажется, есть проблема с рекурсивными структурами данных и (Fluent-) NHibernate или просто его я, являющийся полным идиотом ...
вот дерево:
открытый класс SimpleNode{
public SimpleNode ()
{
this.Children = new List<SimpleNode> ();
}
public virtual SimpleNode Parent { get; private set; }
public virtual List<SimpleNode> Children { get; private set; }
public virtual void setParent (SimpleNode parent)
{
parent.AddChild (this);
Parent = parent;
}
public virtual void AddChild (SimpleNode child)
{
this.Children.Add (child);
}
public virtual void AddChildren (IEnumerable<SimpleNode> children)
{
foreach (var child in children) {
AddChild (child);
}
}
}
отображение:
открытый класс SimpleNodeEntity: ClassMap
{
public SimpleNodeEntity ()
{
Id (x => x.Id);
References (x => x.Parent).Nullable ();
HasMany (x => x.Children).Not.LazyLoad ().Inverse ().Cascade.All ().KeyNullable ();
}
}
Теперь, когда я пытаюсь сохранить узел, я получаю следующее:
System.InvalidCastException: Невозможно привести от исходного типа к целевому типу.at (динамический метод-обертка) SimpleNode.(объект, объект [], NHibernate.Bytecode.Lightweight.SetterCallback) в NHibernate.Bytecode.Lightweight.AccessOptimizer.SetPropertyValues (объект, объект []) в NHibernate.Tuple.Entity.PocoEntityTuplizer.SetPropertyValuesWith),1022 *
Моя настройка:
Mono 2.8.1 (в OSX), NHibernate 2.1.2, FluentNHibernate 1.1.0