Я написал API-интерфейс ObjectFlattenerRecomposer в Nuget, который позволяет записывать и читать сложные объекты в / из хранилища таблиц Azure.
Пакет Nuget: https://www.nuget.org/packages/ObjectFlattenerRecomposer/
Блог: https://doguarslan.wordpress.com/2016/02/03/writing-complex-objects-to-azure-table-storage/
API предоставляет функциональные возможности для преобразования сложных объектов в словарь EntityProperty и функциональные возможности для составления исходного сложного объекта из сведенного объекта.словарь свойств.Одно из применений заключается в том, что API позволяет записывать любой сложный объект с вложенными свойствами в хранилище таблиц Azure в плоской форме, что обычно невозможно с помощью SDK клиента хранилища Azure.
API также позволяет сохранять Enum, TimeSpan, DateTimeOffset, Nullable типы типов в хранилище таблиц Azure, что также невозможно с помощью SDK клиента хранилища Azure.
Использование:
с использованием ObjectFlattenerRecomposer;
// Свести объект и преобразоватьэто к словарю EntityProperty
Словарь flatlinedProperties = EntityPropertyConverter.Flatten (complexObject);
// Создать DynamicTableEntity и установить его PK и RK
DynamicTableEntity dynamicTableEntity = new DynamicTableKity, rowKey);
dynamicTableEntity.Properties = flatenedProperties;
// Записать DynamicTableEntity в хранилище таблиц Azure с помощью клиентского SDK
// Считать объект обратно из AzureTableStorage как DynamicTableEntityнасиспользуя те же PK и RK
сущность DynamicTableEntity = [Чтение из Azure с использованием PK и RK];
// Преобразование DynamicTableEntity обратно в исходный сложный объект.
Представьте себеисходный complexObject был типа Order.
Order order = EntityPropertyConverter.ConvertBack (entity.Properties);