我已经阅读了几篇有关此异常的帖子,但在使用正确的级联时,似乎都没有考虑到错误。鉴于以下结构,我在二级级联上遇到异常。
public class ParentEntity
{
protected virtual IList<FirstChildEntity> InnerFirstChildren
{
get;
private set;
}
}
public class FirstChildEntity
{
protected virtual IList<SecondChildEntity> InnerSecondChildren
{
get;
private set;
}
}
public class SecondChildEntity
{
public virtual SomeProperty { get; protected set; }
}
我的映射覆盖(流利)
public sealed class ParentEntityMappingOverride : IAutoMappingOverride<ParentEntity>
{
public void Override(AutoMapping<ParentEntity> mapping)
{
mapping
.HasMany<FirstChildEntity>(Reveal.Member<ParentEntity>("InnerFirstChildren"))
.KeyColumn("ParentEntityId")
.Inverse()
.Cascade.AllDeleteOrphan();
}
}
public sealed class FirstChildEntityMappingOverride : IAutoMappingOverride<FirstChildEntity>
{
public void Override(AutoMapping<FirstChildEntity> mapping)
{
mapping
.HasMany<SecondChildEntity>(Reveal.Member<FirstChildEntity>("InnerSecondChildren"))
.KeyColumn("FirstChildEntityId")
.Inverse()
.Cascade.AllDeleteOrphan();
}
}
触发异常的代码块会将SecondChildEntity
的新实例添加到InnerSecondChildren
对象上的FirstChildEntity
集合中。然后我从ParentEntity调用Save(),它应该一直向下级联到层次结构中的最后一个集合。
有什么想法吗?提前谢谢!