public ulong GetSingletonOid(uint id) { using (var tr = _keyValueDB.StartTransaction()) { tr.SetKeyPrefix(TableSingletonsPrefix); var key = new byte[PackUnpack.LengthVUInt(id)]; var ofs = 0; PackUnpack.PackVUInt(key, ref ofs, id); if (tr.FindExactKey(key)) { return(new KeyValueDBValueReader(tr).ReadVUInt64()); } return(_objectDB.AllocateNewOid()); } }
public ulong Store(object @object) { var indirect = @object as IIndirect; if (indirect != null) { if (GetObjFromObjCacheByOid(indirect.Oid) == null) { return(indirect.Oid); } @object = indirect.ValueAsObject; } var ti = AutoRegisterType(@object.GetType()); ti.EnsureClientTypeVersion(); DBObjectMetadata metadata; if (_objSmallMetadata != null) { if (_objSmallMetadata.TryGetValue(@object, out metadata)) { if (metadata.Id == 0) { metadata.Id = _owner.AllocateNewOid(); _objSmallCache.Add(metadata.Id, @object); } if (metadata.State != DBObjectState.Dirty) { metadata.State = DBObjectState.Dirty; AddToDirtySet(metadata.Id, @object); } return(metadata.Id); } } else if (_objBigMetadata != null) { if (_objBigMetadata.TryGetValue(@object, out metadata)) { if (metadata.Id == 0) { metadata.Id = _owner.AllocateNewOid(); CompactObjCacheIfNeeded(); _objBigCache.Add(metadata.Id, new WeakReference(@object)); } if (metadata.State != DBObjectState.Dirty) { metadata.State = DBObjectState.Dirty; AddToDirtySet(metadata.Id, @object); } return(metadata.Id); } } return(RegisterNewObject(@object)); }
public ulong AllocateNewOid() { return(_objectDB.AllocateNewOid()); }
public ulong CreateNewObjectId() { var id = _owner.AllocateNewOid(); return(id); }