Как изменить название категории в контейнере «Категории» и в контейнере «Продукты» в CosmosDB?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как изменить название категории в контейнере «Категории» и в контейнере «Продукты» в CosmosDB?

Сообщение Anonymous »

Я новичок в CosmosDB. Я хочу иметь два отдельных контейнера: Категории и Продукты. Они оба имеют название категории. Теперь я хочу изменить название категории с «Устройства» на «Электроника». Как это сделать?
  • Я написал код для изменения названия категории, но этот код очень длинный. Могу ли я как-нибудь сократить этот код?
  • Должен ли я использовать транзакцию в этом случае?
Контейнер категорий – пример данных:
{
"id": "1",
"name": "Devices",
}

Контейнер товаров – пример данных:
{
"id": "1",
"name": "Tv",
"price": 10,
"categoryId": "1",
"categoryName": "Devices"
}

Код:
CosmosClient _client = new CosmosClient(...);
Container Categories = _client.GetDatabase("testdb").GetContainer("categories");
Container Products = _client.GetDatabase("testdb").GetContainer("products");

var categoryIdTochange = "1";
var newCategoryName = "Electronics";

// Change category name in Categories:
var categoryToChangeResponse = await Categories.ReadItemAsync(categoryIdTochange, new PartitionKey(categoryIdTochange));
var categoryToChange = categoryToChangeResponse.Resource;
categoryToChange.Name = newCategoryName;

await Categories.UpsertItemAsync(categoryToChange, new PartitionKey(categoryToChange.Id));

// Get products with category id = 1 ('Devices'):
List productsToChange = new List();

var queryProductsToChange = new QueryDefinition(
"SELECT * FROM c WHERE c.categoryId = @itemId"
).WithParameter("@itemId", categoryIdTochange);

using (var feedIterator = Products.GetItemQueryIterator(queryProductsToChange))
{
while (feedIterator.HasMoreResults)
{
foreach (var item in await feedIterator.ReadNextAsync())
{
productsToChange.Add(item);
}
}
}

// Change category name in products with category 'Devices':
foreach (var productToChange in productsToChange)
{
productToChange.CategoryName = newCategoryName;
await Products.UpsertItemAsync(productToChange, new PartitionKey(productToChange.CategoryId));
}


Подробнее здесь: https://stackoverflow.com/questions/787 ... ntainer-in
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»