public void ReflectPropertyValue(dynamic source, ref dynamic entidadGuardar)
        {
            var propiedadesElemento = source as DynamicJsonObject;
            var dynamicTableEntity  = new DynamicObjectTableEntity();

            if (propiedadesElemento != null)
            {
                foreach (var item in propiedadesElemento.GetDynamicMemberNames())
                {
                    if (!(item == "PartitionKey" || item == "RowKey"))
                    {
                        try
                        {
                            var valor = ConvertToEntityProperty(item, (object)source[item]);

                            if (valor != null)
                            {
                                if (!((DynamicObjectTableEntity)entidadGuardar).properties.Any(a => a.Key == item))
                                {
                                    ((DynamicObjectTableEntity)entidadGuardar).properties.Add(item, valor);
                                }
                            }
                        }
                        catch
                        {
                        }
                    }
                }
            }
        }
        internal void saveToTableStorage(dynamic entidad, Uri blobUrl, tipo_Reflect reflectProperties = tipo_Reflect.reflect_Json)
        {
            try
            {
                string partitionKey = Convert.ToString(entidad.PartitionKey);
                string rowkey       = Convert.ToString(entidad.RowKey);

                //Tener referencia a donde se guarda el blob
                //Para poder recuperarlo por caracteristicasdiferentes al nombre
                dynamic dynamicObject = new DynamicObjectTableEntity(entidad.PartitionKey, entidad.RowKey);
                dynamicObject.url      = blobUrl.AbsolutePath;
                dynamicObject.blobName = string.Format(@"{2}\{0}\{1}.json", partitionKey, rowkey, entidad.nombreTabla);

                if (reflectProperties == tipo_Reflect.reflect_Json)
                {
                    ReflectPropertyValue(entidad, ref dynamicObject);
                }
                else if (reflectProperties == tipo_Reflect.reflect_Dynamic)
                {
                    reflectDynamic(entidad, dynamicObject);
                }

                tableStorage.insert(dynamicObject, entidad.nombreTabla);
            }
            catch
            {
            }
        }
        public void insert(dynamic entidad)
        {
            try
            {
                var client = storageAccount.CreateCloudTableClient();

                client.DefaultRequestOptions = new TableRequestOptions()
                {
                    PayloadFormat = TablePayloadFormat.JsonNoMetadata
                };

                var table = client.GetTableReference(entidad.nombreTabla);
                validarTableExist(client, entidad.nombreTabla);

                table.CreateIfNotExists();

                //Si la entidad esta en estado eliminar
                if (Convert.ToInt32(entidad.Estado_Entidad) == 2)
                {
                    string partitionKey = Convert.ToString(entidad.PartitionKey);
                    string rowkey       = Convert.ToString(entidad.RowKey);

                    delete(entidad.nombreTabla, partitionKey, rowkey);
                }

                else
                {
                    if (Convert.ToBoolean(entidad.generarIdentificador))
                    {
                        //Generando ids consecutivos
                        entidad.RowKey = Variables_Globales.GetUniqueId().ToString();
                        entidad.generarIdentificador = false;
                    }

                    string partitionKey = Convert.ToString(entidad.PartitionKey);
                    string rowkey       = Convert.ToString(entidad.RowKey);

                    dynamic entity = new DynamicObjectTableEntity(partitionKey, rowkey);

                    ReflectPropertyValue(entidad, ref entity);
                    table.Execute(TableOperation.InsertOrReplace(entity));
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        //Inserta elementos desde esta solucion
        public void insert(DynamicObjectTableEntity entidad, string nombreTabla)
        {
            try
            {
                var client = storageAccount.CreateCloudTableClient();

                client.DefaultRequestOptions = new TableRequestOptions()
                {
                    PayloadFormat = TablePayloadFormat.JsonNoMetadata
                };

                var table = client.GetTableReference(nombreTabla);
                table.CreateIfNotExists();
                table.Execute(TableOperation.InsertOrReplace(entidad));
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
        private dynamic proccessEntity(dynamic entidad, TableBatchOperation batchOperations)
        {
            try
            {
                //Si la entidad esta en estado eliminar
                if (Convert.ToInt32(entidad.Estado_Entidad) == 2)
                {
                    string partitionKey = Convert.ToString(entidad.PartitionKey);
                    string rowkey       = Convert.ToString(entidad.RowKey);

                    delete(entidad.nombreTabla, partitionKey, rowkey);
                }
                else
                {
                    if (Convert.ToBoolean(entidad.generarIdentificador))
                    {
                        //Generando ids consecutivos
                        entidad.RowKey = Variables_Globales.GetUniqueId().ToString();
                        entidad.generarIdentificador = false;
                    }

                    string partitionKey = Convert.ToString(entidad.PartitionKey);
                    string rowkey       = Convert.ToString(entidad.RowKey);

                    dynamic entity = new DynamicObjectTableEntity(partitionKey, rowkey);

                    ReflectPropertyValue(entidad, ref entity);

                    var entidadInsertar = TableOperation.InsertOrReplace(entity);
                    batchOperations.Add(entidadInsertar);
                }

                return(entidad);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }