Транзакционный пакет Cosmos DB

Как выполнить оператор выбора (выбрать продукт из продуктов, где ProductID = 8) и выполнить вставку в базу данных в пакетном операторе транзакций для Cosmos DB с использованием .net/c#

Есть ли обходной путь для запуска оператора select как части пакета перед вставкой документа в базу данных Cosmos.

Я не смог найти, как использовать транзакционный пакет для замены существующей хранимой процедуры. имея операторы выбора и вставки.

Моя хранимая процедура:

-НАЧИНАТЬ строка 1: прочитать данные из базы данных и подсчитать количество продуктов. Например: возвращает 12 продуктов.

Строка 2: Еще немного логики.

Строка 3: Вставьте запись в ту же таблицу со счетчиком продуктов, т.е. 12+1, возвращено из строки 1.

-КОНЕЦ

Теперь проблема, с которой я столкнусь, если я перенесу первый оператор из SP, возможно, 2 или несколько экземпляров могут запросить одну и ту же строку и выполнить ее. И в результате я получу дублирование номера журнала в продуктах.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
56
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы не можете включить запрос в транзакцию. Способ сделать это — прочитать данные, а затем использовать оптимистичный контроль параллелизма для обновления с тегом etag для элемента. Образец вы можете найти здесь

Читая перед транзакцией, я попадаю в ситуацию, когда несколько вызовов одной и той же функции в производстве приводят к одному и тому же количеству продуктов, поэтому дальнейшая вставка транзакции добавляет дублирующийся номер журнала в БД. Добавлено больше подробностей о хранимой процедуре в вопросе.

CSharp User 22.11.2022 17:25

Использование eTag для проверки того, обновлено ли значение, поможет мне перейти к моему решению здесь. большое спасибо youtube.com/watch?v=CKtmntnhR58

CSharp User 22.11.2022 18:53

Другие вопросы по теме