如何从IEnumerable <t>上传IReliable字典中的数据

时间:2018-05-06 08:02:52

标签: azure-service-fabric service-fabric-stateful

我正在从Azure表存储中检索数据并将其存储在IEnumerable中,但我不知道如何将此IEnumerable<T>转换为IReliableDictionary<string, Store>,以便我可以将此存储数据保存到州政府服务经理。

var storesRepo = await StateManager.GetOrAddAsync<IReliableDictionary<long, Store>>(""); 

那么如何将此IEnumerable<Store>插入storesRepo

商店类:

    public class Store : TableEntity
    {
    public string Name { get; set; }
    public double Longitude { get; set; }
    public double Latitude { get; set; }
    public string Address { get; set; }
    public double Distance { get; set; }
    public string Email { get; set; }
    public string City { get; set; }
    }


    ReliableDictionary<string, Store>

其中key是商店名称。

1 个答案:

答案 0 :(得分:0)

  • 创建一个字典,枚举集合中的所有商店,在transaction内逐个添加。
  • 确保商店集合不会太大,以避免长时间运行的交易&amp;锁。
  • 请务必先考虑partitioning
  • 添加重试支持。
  • 应用here的最佳做法。

以下元代码:

var storesRepo = await StateManager.GetOrAddAsync<IReliableDictionary<string, Store>>("someName");    
IEnumerable<Store> stores = await GetFromTableStorage();
using (ITransaction tx = base.StateManager.CreateTransaction()) 
{
   foreach(var store in stores)
   {
      await storesRepo.AddAsync(tx, store.Name, store, cancellationToken);
   }
   await tx.CommitAsync();
}