internal override void DeleteMembers(DeleteContextImpl context, ArrayType arrayType , bool isUpdate) { if (arrayType == ArrayType.PlainArray) { new ArrayHandler(TypeHandler(), true).DeletePrimitiveEmbedded((StatefulBuffer)context .Buffer(), this); } else { if (arrayType == ArrayType.MultidimensionalArray) { new MultidimensionalArrayHandler(TypeHandler(), true).DeletePrimitiveEmbedded((StatefulBuffer )context.Buffer(), this); } } }
internal virtual void DeleteMembers(DeleteContextImpl context, ArrayType arrayType , bool isUpdate) { var buffer = (StatefulBuffer) context.Buffer(); var preserveCascade = context.CascadeDeleteDepth(); try { if (CascadeOnDelete()) { if (ClassReflector().IsCollection()) { buffer.SetCascadeDeletes(CollectionDeleteDepth(context)); } else { buffer.SetCascadeDeletes(1); } } Handlers4.FieldAwareTypeHandler(CorrectHandlerVersion(context)).DeleteMembers(context , isUpdate); } catch (Exception e) { // This a catch for changed class hierarchies. // It's very ugly to catch all here but it does // help to heal migration from earlier db4o // versions. var dp = Container()._handlers.DiagnosticProcessor(); if (dp.Enabled()) { dp.DeletionFailed(); } } buffer.SetCascadeDeletes(preserveCascade); }
/// <exception cref="Db4objects.Db4o.Internal.FieldIndexException"></exception> public override void Delete(DeleteContextImpl context, bool isUpdate) { if (!CheckAlive(context)) { return; } try { RemoveIndexEntry(context); if (isUpdate) { IncrementOffset(context); return; } StatefulBuffer buffer = (StatefulBuffer)context.Buffer(); DeleteContextImpl childContext = new DeleteContextImpl(context, GetStoredType(), _config); context.SlotFormat().DoWithSlotIndirection(buffer, GetHandler(), new _IClosure4_445 (this, childContext)); } catch (CorruptionException exc) { throw new FieldIndexException(exc, this); } }