public static Db4objects.Db4o.Internal.HardObjectReference PeekPersisted(Transaction trans, int id, int depth) { object obj = trans.Container().PeekPersisted(trans, id, ActivationDepthProvider(trans ).ActivationDepth(depth, ActivationMode.Peek), true); if (obj == null) { return null; } ObjectReference @ref = trans.ReferenceForId(id); return new Db4objects.Db4o.Internal.HardObjectReference(@ref, obj); }
public static Db4objects.Db4o.Internal.HardObjectReference PeekPersisted(Transaction trans, int id, int depth) { object obj = trans.Container().PeekPersisted(trans, id, ActivationDepthProvider(trans ).ActivationDepth(depth, ActivationMode.Peek), true); if (obj == null) { return(null); } ObjectReference @ref = trans.ReferenceForId(id); return(new Db4objects.Db4o.Internal.HardObjectReference(@ref, obj)); }
/// <exception cref="System.ArgumentNullException"></exception> /// <exception cref="System.ArgumentException"></exception> public void Bind(Transaction trans, object obj, long id) { lock (_lock) { if (obj == null) { throw new ArgumentNullException(); } if (DTrace.enabled) { DTrace.Bind.Log(id, " ihc " + Runtime.IdentityHashCode(obj)); } trans = CheckTransaction(trans); int intID = (int)id; object oldObject = GetByID(trans, id); if (oldObject == null) { throw new ArgumentException("id"); } ObjectReference @ref = trans.ReferenceForId(intID); if (@ref == null) { throw new ArgumentException("obj"); } if (ReflectorForObject(obj) == @ref.ClassMetadata().ClassReflector()) { ObjectReference newRef = Bind2(trans, @ref, obj); newRef.VirtualAttributes(trans, false); } else { throw new Db4oException(Db4objects.Db4o.Internal.Messages.Get(57)); } } }
public virtual void DeleteByID(Transaction transaction, int id, int cascadeDeleteDepth ) { if (id <= 0) { throw new ArgumentException("ID: " + id); } // return; if (cascadeDeleteDepth <= 0) { return; } object obj = GetByID2(transaction, id); if (obj == null) { return; } cascadeDeleteDepth--; IReflectClass claxx = ReflectorForObject(obj); if (claxx.IsCollection()) { cascadeDeleteDepth += 1; } ObjectReference @ref = transaction.ReferenceForId(id); if (@ref == null) { return; } Delete2(transaction, @ref, obj, cascadeDeleteDepth, false); }
public HardObjectReference GetHardObjectReferenceById(Transaction trans, int id) { if (id <= 0) { return HardObjectReference.Invalid; } ObjectReference @ref = trans.ReferenceForId(id); if (@ref != null) { // Take care about handling the returned candidate reference. // If you loose the reference, weak reference management might also. object candidate = @ref.GetObject(); if (candidate != null) { return new HardObjectReference(@ref, candidate); } trans.RemoveReference(@ref); } @ref = new ObjectReference(id); object readObject = @ref.Read(trans, new LegacyActivationDepth(0), Const4.AddToIdTree , true); if (readObject == null) { return HardObjectReference.Invalid; } // check class creation side effect and simply retry recursively // if it hits: if (readObject != @ref.GetObject()) { return GetHardObjectReferenceById(trans, id); } return new HardObjectReference(@ref, readObject); }