Azure service fabric 如何从IEnumerable上载IReliable字典中的数据<;T>;
我正在从Azure表存储中检索数据并将其存储在IEnumerable中,但我不知道如何将此Azure service fabric 如何从IEnumerable上载IReliable字典中的数据<;T>;,azure-service-fabric,service-fabric-stateful,Azure Service Fabric,Service Fabric Stateful,我正在从Azure表存储中检索数据并将其存储在IEnumerable中,但我不知道如何将此IEnumerable转换为IReliableDictionary,以便将此存储数据保存到有状态服务的状态管理器中 var storesRepo = await StateManager.GetOrAddAsync<IReliableDictionary<long, Store>>(""); 其中key是商店名称。 创建一个字典,枚举集合中的所有存储,在一个目录中逐个添加它们 确
IEnumerable
转换为IReliableDictionary
,以便将此存储数据保存到有状态服务的状态管理器中
var storesRepo = await StateManager.GetOrAddAsync<IReliableDictionary<long, Store>>("");
其中key是商店名称。- 创建一个字典,枚举集合中的所有存储,在一个目录中逐个添加它们
- 确保存储集不会变得太大,以避免长时间运行的事务和锁
- 一定要先考虑一下
- 添加重试支持
- 应用来自的最佳实践
var storesRepo=await StateManager.GetOrAddAsync(“someName”);
IEnumerable stores=等待GetFromTableStorage();
使用(ITransaction tx=base.StateManager.CreateTransaction())
{
foreach(存储在存储中的var存储)
{
wait storesRepo.AddAsync(tx、store.Name、store、cancellationToken);
}
wait tx.CommitAsync();
}
Hi there,not About无法为我们提供任何关于到底出了什么问题的线索(例如,您是否有任何错误?),您能告诉我们您正在努力实现什么吗?一些代码也会有帮助。嗨,我正在从Azure表存储中检索一些数据作为IEnumerable。但我不知道如何将这个IEnumerable转换成IReliableDictionary,以便将这个存储数据保存到有状态服务的状态管理器中。var storesRepo=await StateManager.GetOrAddAsync(“”);那么我如何才能将这个IEnumerable插入StoreRepo请通过下次编辑将代码添加到问题中,使其可读性提高很多倍。这一次我这么做了。在您的设置中,ReliableDictionary的唯一键是什么?这是存储的属性吗?类存储
的外观如何?
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>
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();
}