/// <summary> /// Toma un objeto de base de datos de persistencia, lo convierte a un entitySearch y lo guarda en azure search. /// </summary> /// <typeparam name="T">tipo de dato tipo base de datos.</typeparam> /// <param name="document">entidad o documento de base de datos de persistencia</param> public void AddDocument <T>(T document) where T : DocumentDb { // obtiene un entitySearch desde una entidad de base de datos de persistencia. var entitySearch = Mdm.GetEntitySearch(implements, document, hashOper).Cast <IEntitySearch <GeoPointType> >().ToList(); // añade a registro AddToQueried(nameof(AgroSearch <GeoPointType> .AddDocument), JsonConvert.SerializeObject(entitySearch)); // añade a base de datos. baseMainSearch.AddElements(entitySearch); }
/// <summary> /// Obtiene un entitySearch desde un objeto de la base de datos /// el tipo de dato es por comodidad, si púede revisar internamente convierte cualquier objeto a entitySearch. /// Retorna una colección de EntitySearch, una de referencia y el resto local, ver atributos de la clase para más detalle. /// Vea EntityIndexAtribute, en el se asigna una referencia local o de referenci /// </summary> /// <see cref="EntityIndexAtribute"/> /// <typeparam name="T2">modelo del objeto que se convertirá a entity Search</typeparam> /// <param name="model">objeto a convertir</param> /// <returns>Colección de entity Search</returns> public IEntitySearch <GeoPointType>[] GetEntitySearch <T2>(T2 model) where T2 : DocumentDb { // crea un mapper para convertir un IEntitySearch a EntityBaseSearch<GeoPointType> var mapperLocal = mapper.CreateMapper(); // convierte un elemento de persistencia a un entitySearch<GeoPointType> var document = Mdm.GetEntitySearch( implements, // asignación de tipos para cada interface de un entitySearch model // documento a convertir , hashOper) .Select(mapperLocal.Map <EntityBaseSearch <GeoPointType> >) // mapea el entitySearch de tipo GetEntitySearchImplementedType y lo convierte en EntityBaseSearch<GeoPointType>. .ToArray(); return(document); }