Пример #1
0
 public static bool TryGetQueryCache(string key, out EntityDeserializer value)
 {
     if (_entityDeserializer.TryGetValue(key, out value))
     {
         return(true);
     }
     value = null;
     return(false);
 }
Пример #2
0
        /// <summary>
        ///     The entity fetched callback.
        /// </summary>
        /// <param name="fc">
        ///     The fetched cell.
        /// </param>
        private void EntityFetched(ref FetchedCell fc)
        {
            this.fetchedCell = fc;
            var entityScanTarget = fc.EntityScanTarget;
            var entity           = EntityDeserializer.Deserialize(this,
                                                                  typeof(object) /*TODO REMOVE ?? entityScanTarget.EntityType*/, fc.Cell.Value, this.DeserializingEntity);

            if (!this.behaviors.DoNotCache())
            {
                this.entitySpecsFetched.Add(new EntitySpec(entityScanTarget));
            }

            if (entity == null || entityScanTarget.EntityType.IsAssignableFrom(entity.GetType()))
            {
                entityScanTarget.SetValue(entity);
            }
        }
Пример #3
0
        private void InitDeserializerFactory()
        {
            IDataReaderDeserializer deser = new MultipleResultDeserializer(SmartSqlConfig.DeserializerFactory);

            DataReaderDeserializers.Insert(0, deser);
            deser = new ValueTupleDeserializer(SmartSqlConfig.DeserializerFactory);
            DataReaderDeserializers.Insert(1, deser);
            deser = new ValueTypeDeserializer();
            DataReaderDeserializers.Insert(2, deser);
            deser = new DynamicDeserializer();
            DataReaderDeserializers.Insert(3, deser);
            deser = new EntityDeserializer();
            DataReaderDeserializers.Insert(4, deser);
            foreach (var deserializer in DataReaderDeserializers)
            {
                SmartSqlConfig.DeserializerFactory.Add(deserializer);
            }
        }
Пример #4
0
        private EntityDecorator MapSingleEntity(dynamic row)
        {
            var first = row as IDictionary <string, object>;

            IList <object> entities = new List <object>()
            {
                new POBLACIONES(),
                new TIPOCLI(),
                new MERCADO(),
                new ZONAS(),
                new IDIOMAS(),
                new TARCREDI(),
                new CANAL(),
                new SUBLICEN(),
                new OFICINAS(),
                new USO_ALQUILER(),
                new ACTIVI(),
                new ClientSummaryDto(),
                new CliContactsPoco(),
                new PaymentFormDto()
            };
            IList <object> dto = new List <object>()
            {
                new CityDto(),
                new ClientTypeDto(),
                new MercadoDto(),
                new ClientZoneDto(),
                new LanguageDto(),
                new CreditCardDto(),
                new ChannelDto(),
                new CompanyDto(),
                new OfficeDtos(),
                new RentingUseDto(),
                new ActividadDto(),
                new ClientSummaryDto(),
                new CliContactsPoco(),
                new PaymentFormDto()
            };
            EntityDeserializer deserializer = new EntityDeserializer(entities, dto);
            EntityDecorator    dec          = deserializer.Deserialize(row);

            return(dec);
        }
Пример #5
0
        /// <summary>
        ///     The entity fetched callback.
        /// </summary>
        /// <param name="cell">
        ///     The fetched cell, if null then key, buffer, length must be provided.
        /// </param>
        /// <param name="key">
        ///     The cell key.
        /// </param>
        /// <param name="buffer">
        ///     The cell buffer.
        /// </param>
        /// <param name="length">
        ///     The cell buffer length.
        /// </param>
        /// <param name="entityScanTarget">
        ///     The entity scan target.
        /// </param>
        private void EntityFetched(ICell cell, Key key, IntPtr buffer, int length, EntityScanTarget entityScanTarget)
        {
            object entity;

            if (cell != null)
            {
                entity = EntityDeserializer.Deserialize(
                    this,
                    typeof(object),
                    cell.Value,
                    cell.ValueLength,
                    (reference, type, value) => {
                    this.entitiesFetched.TryAdd(entityScanTarget, value);
                    reference.SetKey(value, cell.Key);
                });
            }
            else
            {
                entity = EntityDeserializer.Deserialize(
                    this,
                    typeof(object),
                    buffer,
                    length,
                    (reference, type, value) => {
                    this.entitiesFetched.TryAdd(entityScanTarget, value);
                    reference.SetKey(value, key);
                });
            }

            if (!this.behaviors.DoNotCache())
            {
                this.entitySpecsFetched.Add(new EntitySpec(entityScanTarget));
            }

            if (entity == null || entityScanTarget.EntityType.IsAssignableFrom(entity.GetType()))
            {
                entityScanTarget.SetValue(entity);
            }
        }
Пример #6
0
 public static void SetQueryCache(string key, EntityDeserializer value)
 {
     _entityDeserializer[key] = value;
 }