【发布时间】:2020-07-17 20:55:11
【问题描述】:
我正在 Azure 服务结构上开发一个应用程序。它是一个简单的用户 TODO 应用程序。我创建了 TodoActor 来添加用户 TODO。它只是使用StateManager 添加用户 TODO。我知道 StateManager 会将状态存储在磁盘内存中,而不是任何数据库中。
但在启动应用程序之前,我希望该用户应该为他们预加载 Todos。有没有办法为演员预装状态?
有没有办法在数据库中保存这些数据?
【问题讨论】:
我正在 Azure 服务结构上开发一个应用程序。它是一个简单的用户 TODO 应用程序。我创建了 TodoActor 来添加用户 TODO。它只是使用StateManager 添加用户 TODO。我知道 StateManager 会将状态存储在磁盘内存中,而不是任何数据库中。
但在启动应用程序之前,我希望该用户应该为他们预加载 Todos。有没有办法为演员预装状态?
有没有办法在数据库中保存这些数据?
【问题讨论】:
演员are created 使用时。例如,当它被调用时,或者当提醒触发时。如果一个 Actor 以前从未使用过,那么它还不存在,因此无法预加载状态。
您可以做的是在创建 Actor 时即时预加载数据:
protected override async Task OnAactivateAsync()
{
if(!await StateManager.ContainsStateAsync("ToDoState"))
{
await this.StateManager.TryAddStateAsync<List<string>>("ToDoState", new List<string>{});
}
}
【讨论】: