private void CascadeActivation(IActivationContext context) { IActivationDepth depth = context.Depth(); if (!depth.RequiresActivation()) { return; } if (depth.Mode().IsDeactivate()) { Container().StillToDeactivate(_transaction, context.TargetObject(), depth, false); } else { // FIXME: [TA] do we really need to check for isValueType here? Db4objects.Db4o.Internal.ClassMetadata classMetadata = context.ClassMetadata(); if (classMetadata.IsStruct()) { classMetadata.CascadeActivation(context); } else { Container().StillToActivate(context); } } }
private int DescendDepth(ClassMetadata metadata) { int depth = ConfiguredActivationDepth(metadata) - 1; if (metadata.IsStruct()) { // We also have to instantiate structs completely every time. return Math.Max(1, depth); } return depth; }