public KeyValuePair <string, EntityProperty>[] ConvertValue <EntityType>(MemberInfo memberInfo, object value, IWrapTableEntity <EntityType> tableEntityWrapper) { var accountLinks = (AccountLinks)value; return(accountLinks.accountLinks .NullToEmpty() .Select( accountLink => { var key = $"AM{accountLink.method.id.ToString("n")}"; var value = EntityProperty.GeneratePropertyForString(accountLink.externalAccountKey); return key.PairWithValue(value); }) .ToArray()); }
public override KeyValuePair <string, EntityProperty>[] ConvertValue <EntityType>(MemberInfo memberInfo, object value, IWrapTableEntity <EntityType> tableEntityWrapper) { var propertyName = this.GetTablePropertyName(memberInfo); var ep = GetEp(); return(new KeyValuePair <string, EntityProperty>[] { propertyName.PairWithValue(ep) }); EntityProperty GetEp() { if (value == null) { return(new EntityProperty(default(long?))); } if (value is long) { return(new EntityProperty((long)value)); } if (value is int) { return(new EntityProperty((long)((int)value))); } if (value is DateTime) { return(new EntityProperty(((DateTime)value).Ticks)); } if (value is DateTime?) { var dtMaybe = value as DateTime?; if (dtMaybe.HasValue) { return(new EntityProperty(dtMaybe.Value.Ticks)); } return(new EntityProperty(default(long?))); } throw new ArgumentException( $"{typeof(StorageDateTimeTicksAttribute).FullName} cannot convert {value.GetType().FullName} to an EntityProperty"); } }
public KeyValuePair <string, EntityProperty>[] ConvertValue <EntityType>(MemberInfo memberInfo, object value, IWrapTableEntity <EntityType> tableEntityWrapper) { return(new KeyValuePair <string, EntityProperty>[] { }); }
public virtual KeyValuePair <string, EntityProperty>[] ConvertValue <EntityType>(MemberInfo memberInfo, object value, IWrapTableEntity <EntityType> tableEntityWrapper) { var key = GetTablePropertyName(memberInfo); var rowKey = tableEntityWrapper.RowKey; var partitionKey = tableEntityWrapper.PartitionKey; return(new KeyValuePair <string, EntityProperty>[] { $"{key}__RK".PairWithValue(new EntityProperty(rowKey)), $"{key}__PK".PairWithValue(new EntityProperty(partitionKey)), }); }
public override KeyValuePair <string, EntityProperty>[] ConvertValue <EntityType>(MemberInfo memberInfo, object value, IWrapTableEntity <EntityType> tableEntityWrapper) { var propertyName = this.GetTablePropertyName(memberInfo); var valueType = memberInfo.GetPropertyOrFieldType(); return(CastValue(valueType, value, propertyName)); }
public override KeyValuePair <string, EntityProperty>[] ConvertValue <EntityType>(MemberInfo memberInfo, object value, IWrapTableEntity <EntityType> tableEntityWrapper) { var propertyName = this.GetTablePropertyName(memberInfo); var valueType = memberInfo.GetPropertyOrFieldType(); return(CastValue(valueType, value, propertyName) .SelectMany( propNameStorageValueKvp => { var propName = propNameStorageValueKvp.Key; var storageValue = propNameStorageValueKvp.Value; if (storageValue.PropertyType == EdmType.Binary) { if (storageValue.BinaryValue.Length <= 0x10000) { return propNameStorageValueKvp.AsArray(); } var overflowTokenBytes = new Guid(overflowToken).ToByteArray(); return storageValue.BinaryValue .Split(x => 0x10000) .Select( (bytes, index) => { var bytesArr = bytes.ToArray(); var storageValueSized = new EntityProperty(bytesArr); var propNameIndexed = $"{propName}_overflow_{index}"; return propNameIndexed.PairWithValue(storageValueSized); }) .Append(propName.PairWithValue(new EntityProperty(overflowTokenBytes))); } if (storageValue.PropertyType == EdmType.String) { if (storageValue.StringValue.Length <= 0x8000) { return propNameStorageValueKvp.AsArray(); } return storageValue.StringValue .Split(x => 0x8000) .Select( (chars, index) => { var stringValue = new String(chars.ToArray()); var storageValueSized = new EntityProperty(stringValue); var propNameIndexed = $"{propName}_overflow_{index}"; return propNameIndexed.PairWithValue(storageValueSized); }) .Append(propName.PairWithValue(new EntityProperty(overflowTokenString))); } return propNameStorageValueKvp.AsArray(); }) .ToArray()); }