我正在Azure服务结构上开发一个应用程序。它是一个简单的用户TODO应用程序。我创建TodoActor是为了添加用户TODO。它只是使用StateManager
添加用户TODO。我知道StateManager会将State存储在磁盘内存中,而不是任何数据库中。
但在启动应用程序之前,我希望用户已经为它们预装了Todos。有没有办法为演员预先加载States?
有什么方法可以将这些数据保存在数据库中吗?
演员是在使用时创建的。例如,当它被调用时,或者当提醒触发时。如果Actor以前从未使用过,那么它现在还不存在,所以无法预加载状态。
您可以做的是在创建Actor时及时预加载数据:
protected override async Task OnAactivateAsync()
{
if(!await StateManager.ContainsStateAsync("ToDoState"))
{
await this.StateManager.TryAddStateAsync<List<string>>("ToDoState", new List<string>{});
}
}