public static bool TryGetQueryCache(string key, out EntityDeserializer value) { if (_entityDeserializer.TryGetValue(key, out value)) { return(true); } value = null; return(false); }
/// <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); } }
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); } }
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); }
/// <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); } }
public static void SetQueryCache(string key, EntityDeserializer value) { _entityDeserializer[key] = value; }