хорошо, давайте немного проясним ситуацию.
у вас есть приложение MVC A1 с собственной базой данных D1 у вас есть API, давайте назовем его A2 с собственной базой данных D2 .
вам нужен код в A1 , который сохраняет временные значения в D1 , затем запускает вызов A2 и, если ответ успешен, он сохраняет временные данные из D1 в нужном месте на этот раз.
на основе вашего псевдокод, я бы предложил вам создать вторую таблицу, где вы сохраните свои «временные» данные в D1 .Таким образом, в вашей базе данных есть дополнительная таблица, и поток выглядит следующим образом:
сначала вы сохраняете данные A1 в этой таблице, затем вызываете A2 , данные сохраняютсяв D2 , A1 получает подтверждение и вызывает метод, который перемещает данные из второй таблицы в нужное место.
Сценарии для рассмотрения:
Сохранение временных данных в D1 работает, но вызов A2 завершается неудачно.Теперь вы удаляете потерянные данные с помощью пакетного задания или просто вызываете что-то, что удаляет их, когда сбой при вызове A2 .
Вызов A2 завершается успешно, и вызов D1 завершается неудачно, поэтому теперь у вас есть временные данные в D1 , которые не удалось переместить в правую таблицу.Вы можете добавить флаг ко второй таблице напротив каждой строки, который указывает, что второй вызов A2 завершился успешно, поэтому эти данные должны перемещаться в нужном месте, когда это возможно.У вас может быть служба, которая периодически запускается, и если она находит какие-либо данные с установленным в true флагом, то она перемещает данные в нужное место.
Существуют и другие способы обработкисценарии, подобные этому.Вы можете использовать систему очередей для управления этим.Каждая строка данных становится сообщением, вы назначаете ему уникальный идентификатор, GUID, который в основном является CorrelationID, и он одинаков в обеих системах.Даже если одна система выйдет из строя, когда она вернется, данные будут сохранены, и в мире все хорошо, и благодаря общему идентификатору вы всегда можете правильно связать их.