Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        // 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);
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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);
        }