Свободный NHibernate TransientObjectException с определенным каскадом - PullRequest
0 голосов
/ 05 января 2012

Я прочитал несколько сообщений об этом исключении, но ни один из них, похоже, не объясняет ошибку при использовании правильного каскадирования.Учитывая следующую структуру, я сталкиваюсь с исключением на каскаде второго уровня.

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.Затем я вызываю Save () из ParentEntity, который должен каскадно доходить до последней коллекции в иерархии.

Есть идеи?Заранее спасибо!

...