本文整理汇总了C#中Db4objects.Db4o.Internal.Transaction.ReferenceForId方法的典型用法代码示例。如果您正苦于以下问题:C# Transaction.ReferenceForId方法的具体用法?C# Transaction.ReferenceForId怎么用?C# Transaction.ReferenceForId使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Db4objects.Db4o.Internal.Transaction
的用法示例。
在下文中一共展示了Transaction.ReferenceForId方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: PeekPersisted
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);
}
示例2: Bind
/// <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));
}
}
}
示例3: DeleteByID
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);
}
示例4: GetHardObjectReferenceById
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);
}