Exemplo n.º 1
0
        /// <summary>
        /// Сохраняет chunked-данные всех объектов из датаграммы
        /// </summary>
        /// <param name="transactionID">Идентификатор транзакции</param>
        /// <param name="datagram">датаграмма</param>
        /// <param name="con">соединение</param>
        protected static void saveChunkedData(Guid transactionID, XDatagram datagram, XStorageConnection con)
        {
            bool bChunkedDataFound = false;

            foreach (XStorageObjectToSave xobj in datagram.ObjectsToInsert)
            {
                bChunkedDataFound = saveObjectChunkedData(xobj, con);
            }

            foreach (XStorageObjectToSave xobj in datagram.ObjectsToUpdate)
            {
                bChunkedDataFound = bChunkedDataFound || saveObjectChunkedData(xobj, con);
            }

            // Если в процессе какие-либо "кусочные" данные были перегружены
            // в положенные таблицы - удаляем такие "куски":
            if (bChunkedDataFound)
            {
                XChunkStorageGateway.RemoveTransactionData(transactionID, con);
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Сохраняет chunked-данные заданного объекта
        /// </summary>
        /// <param name="xobj">объект</param>
        /// <param name="con">соединение с БД</param>
        /// <returns>true - объект содержал chunked данные, иначе false</returns>
        protected static bool saveObjectChunkedData(XStorageObjectToSave xobj, XStorageConnection con)
        {
            string sPropName;                   // наименование свойтсва
            Guid   ownerID;                     // идентификатор цепочки кусочных данных свойства
            bool   bChunkedDataFound = false;

            // найдем свойства, чьи данные были загруженны по частам
            foreach (DictionaryEntry entry in xobj.PropertiesWithChunkedData)
            {
                sPropName         = (string)entry.Key;
                ownerID           = (Guid)entry.Value;
                bChunkedDataFound = true;
                XChunkStorageGateway.MergePropertyChunkedData(
                    ownerID,
                    xobj.ObjectType,
                    sPropName,
                    xobj.ObjectID,
                    con);
            }
            return(bChunkedDataFound);
        }