Это метод, которым мы закончили реализацию. Короткая версия: сериализуйте объект 2 и введите его в свойство Value объекта 1, а затем поместите в хранилище таблиц.
Объект 1:
public class CloudEntity<T>
{
public CloudEntity()
{
Timestamp = DateTime.UtcNow;
}
public string RowKey { get; set; }
public string PartitionKey { get; set; }
public DateTime Timestamp { get; set; }
public T Value { get; set; }
}
Объект 2:
public class Store
{
public string StoreId { get; set; }
public string StoreName { get; set; }
public string StoreType { get; set; }
public Address MailingAddress { get; set; }
public PhoneNumber TelephoneNumber { get; set; }
public StoreHours StoreHours { get; set; }
}
Объект 3 может быть любым ... адрес в этом случае может быть ... все это получает сериализации.
Так в коде, вы можете получить следующую таблицу (более чем на 1 способ сделать это):
var tableStorage = new ReliableCloudTableStorage(connection string you're using);
Тогда допустим у вас есть экземпляр магазина() вы хотите поместить в хранилище таблицы:
var myStore = new Store(
{
storeId = "9832",
storeName = "Headquarters"
...
});
Вы можете сделать это следующим образом:
var cloudEntity = new CloudEntity<string>
{
PartitionKey = whatever you want your partition key to be,
RowKey = whatever you want your row key to be,
Value = JsonConvert.SerializeObject(myStore) // THIS IS THE MAGIC
};
tableStorage.Add<CloudEntity<string>>(name of table in table storage, cloudEntity);
объект поместить в хранилище таблицы будет иметь ll свойства класса CloudEntity (ключ строки, ключ раздела и т. д.), а в столбце «Значение» будет json объекта, который вы хотите сохранить. Это легко читается через Azure Storage Explorer, который тоже хорош.
Чтобы получить объект обратно, использовать что-то вроде этого:
var cloudEntity = tableStorage.Get<CloudEntity<string>>(name of your table, partitionKey: whatever the partition key is);
Тогда вы можете десериализации поле «Value» тех, в объект вы ожидали:
var myStore = JsonConvert.DeserializeObject<Store>(cloudEntity.Value);
Если вы получаете кучу назад, просто сделайте myStore список и пройдите через cloudEntities, десериализуя и добавив каждый в свой список.
Надеюсь, это поможет!