У меня есть таблица со следующей структурой:
CREATE TABLE [dbo].[Photos](
[Id] [bigint] IDENTITY(1,1) NOT NULL,
[OriginalUrl] [nvarchar](450) NOT NULL,
[ObjCode] [nvarchar](10) NOT NULL,
[ProviderCode] [int] NOT NULL,
[ImageId] [int] NOT NULL
и один из индексов:
CREATE UNIQUE NONCLUSTERED INDEX [IX_Photos_ObjCode_ProvCode_ImageId] ON
[dbo].[Photos]
(
[ObjCode] ASC,
[ProviderCode] ASC,
[ImageId] ASC
)
Общая архитектура:
web api - отвечает за обработку входящего запроса и возврат данных, хранящихся в базе данных, или отправку запросов в очередь, если данных нет
60 экземпляров обработчиков, которые потребляют очередь, обрабатывают запросы и сохраняют данные в дБ
Я получаю много исключений, когда экземпляр обработчика пытается вставить данные, которые не должны нарушать уникальность данных. Например, я получаю следующую ошибку:
Произошла ошибка при обновлении записей. Смотрите внутреннее исключение для деталей. Невозможно вставить повторяющуюся строку ключа в объект 'dbo.Photos' с уникальным индексом 'IX_Photos_ObjCode_ProvCode_ImageId'. Дубликат значения ключа (ART345, 2625, 0).
при попытке вставить набор элементов с разными параметрами, например, «PKM6778,8976,0» (ObjCode, ProvCode, ImageId)
Невозможно воспроизвести эту ошибку во время отладки или работы с одним экземпляром обработчика. Журналы также показывают, что ни один из наборов не содержит элементов, которые могли бы нарушить этот индекс
Стек: asp .net core 2.2, EF Core 2.0, MSSQL 2008