流畅的NHibernate TransientObjectException定义了级联

时间:2012-01-05 17:42:09

标签: nhibernate fluent-nhibernate nhibernate-mapping fluent-nhibernate-mapping

我已经阅读了几篇有关此异常的帖子,但在使用正确的级联时,似乎都没有考虑到错误。鉴于以下结构,我在二级级联上遇到异常。

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(),它应该一直向下级联到层次结构中的最后一个集合。

有什么想法吗?提前谢谢!

0 个答案:

没有答案