Могу ли я получить доступ к другому идентификатору коллекции в моей базе данных cosmos, используя userstate?Спасибо!
var userStateStorage = new CosmosDbStorage(new CosmosDbStorageOptions
{
AuthKey = CosmosDBKey,
CollectionId = CosmosDBCollectionNameUser,
CosmosDBEndpoint = new Uri(CosmosServiceEndpoint),
DatabaseId = CosmosDBDatabaseName,
});
var userState = new UserState(userStateStorage);
services.AddSingleton(userState);
ОБНОВЛЕНИЕ: Я создал это так, но когда я проверяю космос, моя коллекция напоминанийзаполняется другой моделью класса (которую я использую на другом userState)
При запуске:
var reminderStorage = new CosmosDbStorage(new CosmosDbStorageOptions
{
AuthKey = CosmosDBKey,
CollectionId = CosmosDBCollectionNameReminder,
CosmosDBEndpoint = new Uri(CosmosServiceEndpoint),
DatabaseId = CosmosDBDatabaseName,
});
var reminderState = new UserState(reminderStorage);
services.AddSingleton(reminderState);
В диалоговом окне:
public class ReminderDialog : ComponentDialog
{
private readonly IStatePropertyAccessor<BasicUserReminders> _reminderAccessor;
public ReminderDialog(UserState userState)
: base(nameof(ReminderDialog))
{
_reminderAccessor = userState.CreateProperty<BasicUserReminders>("Reminders");
WaterfallStep[] waterfallSteps = new WaterfallStep[]
{
FirstStepAsync,
SecondStepAsync,
};
AddDialog(new WaterfallDialog(nameof(WaterfallDialog), waterfallSteps));
}
private async Task<DialogTurnResult> FirstStepAsync(WaterfallStepContext stepContext, CancellationToken cancellationToken)
{
var reminderState = await _reminderAccessor.GetAsync(stepContext.Context, () => new BasicUserReminders(), cancellationToken);
var reminder = new BasicUserReminders.Reminder
{
Subject = "to drink water",
Days = new List<int> { 4, 3, 2 },
Frequency = "everyday"
};
reminderState.Reminders.Add(reminder);
return await stepContext.EndDialogAsync();
}