У меня есть конечная точка, которая принимает некоторую сущность в качестве POST, называемую Entry.Эти записи имеют свойство OrderNumber, которое является числом от 1-n, определенным на основе записей, которые уже произошли сегодня.Поэтому, когда в базе данных на текущий день 100 записей, новый порядковый номер должен быть 101.
Так что же произойдет, когда вы дважды достигнете конечной точки с разных устройств (X и Y):
ИКС.Посылает запись
X.Запрашивает у базы данных текущие записи -> ответ с 100
Y.Посылает запись
Y.Запрашивает в базе данных текущие записи -> ответ с 100
X.Запись будет вставлена с порядковым номером 101
Y.Запись будет вставлена с помощью OrderNumber 101
Мое решение состоит в том, чтобы создать фоновую задачу с очередью (как показано здесь: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/host/hosted-services?view=aspnetcore-2.1#queued-background-tasks) и создать запись там, чтобы гарантировать, что они обрабатываются одна за другой.
Теперь проблема в моем контроллере заключается в том, что я не могу вернуть последнюю запись с правильным OrderNumber во время запроса, потому что это происходит всякий раз, когда очередь обрабатывает эту запись.
Так какклиент получает ответ обратно правильно? Или есть лучший / другой способ обработки этих случаев?