Лучшие практики для управления одним-многими вставками в ядре Entity Framework - PullRequest
0 голосов
/ 10 января 2020

В настоящее время мы разрабатываем консольное приложение. Net, которое использует веб-сервис для извлечения данных и асинхронной вставки их в базу данных.

Веб-сервис возвращает объект - чтобы упростить задачу, назовем его Заказы - имеет Страна , Дата и Заказано По полям. В нашей базе данных есть таблица Страны и Заказы с отношением 1 ко многим.

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

Рекомендуется ли обновлять список стран только при добавлении новой записи и не допускать вставки одинаковых значений различными задачами?

С уважением

1 Ответ

1 голос
/ 11 января 2020

Рекомендуется ли обновлять список стран только при добавлении новой записи и предотвращать вставку одинаковых значений различными задачами?

Да. Поместите уникальный индекс в свойство Name объекта Country. Затем, когда вы попытаетесь добавить дубликат Страны, произойдет сбой, и вместо этого вы сможете получить идентификатор существующей страны.

...