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; } }