예제 #1
0
 public void Remove(Transaction trans, IPreparedComparison preparedComparison, object
                    obj, int index)
 {
     if (Remove(trans, obj, index))
     {
         return;
     }
     // now we try if removal is OK for the next element in this node
     if (index != LastIndex())
     {
         if (CompareInWriteMode(preparedComparison, index + 1) != 0)
         {
             return;
         }
         Remove(trans, preparedComparison, obj, index + 1);
         return;
     }
     // nothing else worked so far, move on to the next node, try there
     Db4objects.Db4o.Internal.Btree.BTreeNode node = NextNode();
     if (node == null)
     {
         return;
     }
     node.PrepareWrite(trans);
     if (node.CompareInWriteMode(preparedComparison, 0) != 0)
     {
         return;
     }
     node.Remove(trans, preparedComparison, obj, 0);
 }