Если мне нужно выполнить операцию на уровне сохраняемости за орлеанским набором зерен, как я могу гарантировать, что эти затронутые зерна могут повторно активироваться в соответствии с обновленными данными?
Мой пример: у меня есть гранула на уровне записи Employee (EmployeeID в качестве идентификатора Grain ID), и мне нужно выполнить массовую операцию с некоторыми записями. Очевидно, важно убедиться, что зерна повторно загружаются после этой операции.
Я создал силос Orleans с зерном для выполнения различных операций, в том числе смены сотрудников. Я использую функцию GetGrain, как показано ниже.
var employeeGrain = _clusterClient.GetGrain<IEmployeeGrain>(employeeId, "employee");
Это зерно останется активным, пока оно используется на основе стандартного жизненного цикла Orleans. Мой вопрос: если я сознательно выполняю действие, которое изменяет базовые данные, как мне вызвать повторную активацию затронутых зерен?
Из официальной документации https://dotnet.github.io/orleans/1.5/Documentation/Advanced-Concepts/Activation-Garbage-Collection.html
Кажется, что вы можете заставить отдельное зерно деактивироваться
this.DeactivateOnIdle()
Но если я выполняю более крупную операцию, я бы хотел избежать этого на зерно? Я думаю, в идеале перерабатывать все зерна определенного типа.