public static Document GetDocumentFromEntity(ITableEntity entity, OperationContext context, TableRequestOptions options) { if (entity == null) { throw new ArgumentException("Entity should not be null."); } IDictionary <string, EntityProperty> properties = entity.WriteEntity(context); if (options != null) { try { options.AssertPolicyIfRequired(); if (options.EncryptionPolicy != null) { properties = options.EncryptionPolicy.EncryptEntity(properties, entity.PartitionKey, entity.RowKey, options.EncryptionResolver); } } catch (Exception ex) { throw new StorageException(SR.EncryptionLogicError, ex) { IsRetryable = false }; } } using (StringWriter stringWriter = new StringWriter(CultureInfo.InvariantCulture)) { using (ITableEntityWriter entityWriter = new TableEntityWriter(stringWriter)) { entityWriter.Start(); foreach (var property in properties) { entityWriter.WriteName(property.Key); entityWriter.WriteValue(property.Value); } entityWriter.End(); } //$TODO: Write id and partition key directly to string writer Document document = JsonConvert.DeserializeObject <Document>(stringWriter.ToString()); document.Id = entity.RowKey; document.SetPropertyValue(StellarConstants.PartitionKeyPropertyName, entity.PartitionKey); return(document); } }
internal static IEnumerable <KeyValuePair <string, object> > GetPropertiesFromDictionary(IDictionary <string, EntityProperty> properties, TableRequestOptions options, string partitionKey, string rowKey, bool ignoreEncryption) { // Check if encryption policy is set and invoke EncryptEnity if it is set. if (options != null) { options.AssertPolicyIfRequired(); if (options.EncryptionPolicy != null && !ignoreEncryption) { properties = options.EncryptionPolicy.EncryptEntity(properties, partitionKey, rowKey, options.EncryptionResolver); } } return(properties.Select(kvp => new KeyValuePair <string, object>(kvp.Key, kvp.Value.PropertyAsObject))); }
internal static IEnumerable<ODataProperty> GetPropertiesFromDictionary(IDictionary<string, EntityProperty> properties, TableRequestOptions options, string partitionKey, string rowKey) { // Check if encryption policy is set and invoke EncryptEnity if it is set. if (options != null) { options.AssertPolicyIfRequired(); if (options.EncryptionPolicy != null) { properties = options.EncryptionPolicy.EncryptEntity(properties, partitionKey, rowKey, options.EncryptionResolver); } } return properties.Select(kvp => new ODataProperty() { Name = kvp.Key, Value = kvp.Value.PropertyAsObject }); }