C# 使用(Fluent-)NHibernate持久化简单树会导致System.InvalidCastException

C# 使用(Fluent-)NHibernate持久化简单树会导致System.InvalidCastException,c#,nhibernate,fluent-nhibernate,recursion,mono,C#,Nhibernate,Fluent Nhibernate,Recursion,Mono,递归数据结构和(Fluent-)NHibernate似乎有问题,或者只是我,一个十足的白痴 这是树: 公共类单节点{ public SimpleNode () { this.Children = new List<SimpleNode> (); } public virtual SimpleNode Parent { get; private set; } public virtual List<SimpleNode> Children { get; priva

递归数据结构和(Fluent-)NHibernate似乎有问题,或者只是我,一个十足的白痴

这是树:

公共类单节点{

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

现在,每当我尝试保存节点时,我都会得到以下结果:

System.InvalidCastException:无法从源类型强制转换为目标类型。at(包装器动态方法)SimpleNode。(对象,对象[],NHibernate.Bytecode.Lightweight.SetterCallback)在NHibernate.Bytecode.Lightweight.AccessOptimizer.SetPropertyValues(对象,对象[])在NHibernate.Tuple.Entity.PocoEntityTuplizer.SetPropertyValuesOptimizer(对象,对象[])处

我的设置:


Mono 2.8.1(在OSX上)、NHibernate 2.1.2、FluentNHibernate 1.1.0记录在案:我用“ChildReferences”关系替换“ChildReferences”关系,将实际的“Children”保留为暂时的(通过“ChildReferences”间接构建):

在映射中:

HasMany (x => x.ChildReferences).Cascade.All ();

public class ChildReference 
    {
        public virtual int ChildId { get; set; }
    }  

public virtual IList&lt;ChildReference&gt; ChildReferences { get; private set; }
HasMany (x => x.ChildReferences).Cascade.All ();

public class ChildReference 
    {
        public virtual int ChildId { get; set; }
    }