Я использую эту статью в качестве примера https://docs.microsoft.com/en-us/azure/cosmos-db/how-to-model-partition-example с контейнером Users с userId и именем пользователя и ключом раздела как userId.
{
"id": "54c7da13-f4b8-4668-90dc-7c1aa968a73e",
"userId": "54c7da13-f4b8-4668-90dc-7c1aa968a73e",
"type": "user",
"username": "jeffw"
}
На моей странице создания пользователя я хотите убедиться, что имя пользователя уникально, прежде чем добавлять нового пользователя. Я попробовал предварительный запуск, но обнаружил, что «нельзя запускать хранимые процедуры или триггеры в нескольких логических разделах». Как мне убедиться, что при создании пользователя он выбрал уникальное имя пользователя? Я думаю, что могу изменить ключ раздела на имя пользователя, но почему в статье вместо этого используется userId?
РЕШЕНИЕ
См. Ответ от @ mark-brown.
Создайте уникальный ключ в контейнере Users и / username:
await database.Database.DefineContainer(name: "Users", partitionKeyPath: "/userId")
.WithUniqueKey().Path("/username").Attach()
.CreateIfNotExistsAsync();
Затем попробуйте создать нового пользователя с userId как «unique_username» и новым именем пользователя, которое пытается создать:
{
"id": "06af2937-4677-4d27-a167-5517aa6d0ffd",
"userId": "unique_username",
"type": "unique_username",
"username": "jeffw"
}
await _usersContainer.CreateItemAsync(uniqueUser, new PartitionKey("unique_username"));
Это вернет статус конфликта, если Такое имя пользователя уже существует. Пример здесь https://github.com/jwidmer/AzureCosmosDbBlogExample/blob/master/BlogWebApp/Services/BlogCosmosDbService.cs