В настоящее время мы разрабатываем консольное приложение. Net, которое использует веб-сервис для извлечения данных и асинхронной вставки их в базу данных.
Веб-сервис возвращает объект - чтобы упростить задачу, назовем его Заказы - имеет Страна , Дата и Заказано По полям. В нашей базе данных есть таблица Страны и Заказы с отношением 1 ко многим.
Когда приложение запускается, оно сохраняет список стран в свойстве c List. Когда возвращается новый Заказ от веб-службы, поле страны проверяется, если оно существует в текущем свойстве Списка, чтобы получить из него поле Id. Если он не существует, новая запись вставляется в базу данных, а свойство List обновляется вспомогательным методом. Этот сценарий работает без проблем в одном потоке. Однако когда мы выполняем запросы веб-службы и обновляем базу данных асинхронно, каждая асинхронная задача c обновляет свойство списка независимо, что приводит к появлению нескольких значений страны с одним и тем же именем.
Рекомендуется ли обновлять список стран только при добавлении новой записи и не допускать вставки одинаковых значений различными задачами?
С уважением