public static void SaveImpl(IWriterCtx writerCtx, object obj) { var ind = obj as DBIndirect <T>; if (ind != null) { if (ind._transaction != null) { if (((IDBWriterCtx)writerCtx).GetTransaction() != ind._transaction) { throw new BTDBException("Transaction does not match when saving nonmaterialized IIndirect"); } writerCtx.Writer().WriteVInt64((long)ind._oid); return; } } var ind2 = obj as IIndirect <T>; if (ind2 != null) { writerCtx.WriteNativeObjectPreventInline(ind2.Value); return; } writerCtx.WriteNativeObjectPreventInline(obj); }
public void WriteInlineObject(object @object, IWriterCtx writerCtx) { var ti = GetTableInfoFromType(@object.GetType()); EnsureClientTypeNotNull(ti); IfNeededPersistTableInfo(ti); var writer = writerCtx.Writer(); writer.WriteVUInt32(ti.Id); writer.WriteVUInt32(ti.ClientTypeVersion); ti.Saver(this, null, writer, @object); }
// ReSharper disable once UnusedMember.Global public static void DoSave(IWriterCtx ctx, IOrderedSet <TKey>?dictionary, int cfgId) { var writerCtx = (IDBWriterCtx)ctx; if (!(dictionary is ODBSet <TKey> goodDict)) { var tr = writerCtx.GetTransaction(); var id = tr.AllocateDictionaryId(); goodDict = new ODBSet <TKey>(tr, (ODBDictionaryConfiguration)writerCtx.FindInstance(cfgId), id); if (dictionary != null) { foreach (var pair in dictionary) { goodDict.Add(pair); } } } ctx.Writer().WriteVUInt64(goodDict._id); }
public static void DoSave(IWriterCtx ctx, IDictionary <TKey, TValue>?dictionary, int cfgId) { var writerCtx = (IDBWriterCtx)ctx; if (!(dictionary is ODBDictionary <TKey, TValue> goodDict)) { var tr = writerCtx.GetTransaction(); var id = tr.AllocateDictionaryId(); goodDict = new ODBDictionary <TKey, TValue>(tr, ODBDictionaryConfiguration.Get(cfgId), id); if (dictionary != null) { foreach (var pair in dictionary) { goodDict.Add(pair.Key, pair.Value); } } } ctx.Writer().WriteVUInt64(goodDict._id); }
public static void DoSave(IWriterCtx ctx, IDictionary <TKey, TValue> dictionary, int cfgId) { var dbctx = (IDBWriterCtx)ctx; var goodDict = dictionary as ODBDictionary <TKey, TValue>; if (goodDict == null) { var tr = dbctx.GetTransaction(); var id = tr.AllocateDictionaryId(); goodDict = new ODBDictionary <TKey, TValue>(tr, (ODBDictionaryConfiguration)dbctx.FindInstance(cfgId), id); if (dictionary != null) { foreach (var pair in dictionary) { goodDict.Add(pair.Key, pair.Value); } } } ctx.Writer().WriteVUInt64(goodDict._id); }