C# 使用(Fluent-)NHibernate持久化简单树会导致System.InvalidCastException
递归数据结构和(Fluent-)NHibernate似乎有问题,或者只是我,一个十足的白痴 这是树: 公共类单节点{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
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<ChildReference> ChildReferences { get; private set; }
HasMany (x => x.ChildReferences).Cascade.All ();
public class ChildReference
{
public virtual int ChildId { get; set; }
}