Изглежда, че имате бизнес проблем. Първо трябва да решите какво ще се случи, когато вече имате обект със същия идентификатор и някой се опита да вмъкне нов (нова информация) със същия идентификатор.
Изглежда, че вече сте решили:искате да откажете действието.
Това е някак необичайно, защото ако получите нови данни от клиенти на този API за обект, който вече е съществувал във вашата база данни -> това прилича повече на актуализация.
Съществуват някои библиотеки, които могат да правят нещо подобно:https://github.com/borisdj/EFCore.BulkExtensions (който в момента работи само с MsSQL)
Използване на тази библиотека (която е известна и вече беше спомената от Microsoft като основен инструмент на EF:https://docs.microsoft.com/en-us/ef/core/extensions/ ) имате възможност да:
-
Вмъкнете или актуализирайте всички данни (всички колони), ако намерите обект със същия идентификатор (Upsert):
context.BulkInsertOrUpdateAsync(entitiesList);
-
Синхронизирайте обекти от вашата база данни с всички обекти, които получавате от клиенти:
context.BulkInsertOrUpdateOrDeleteAsync(entitiesList);
Най-вероятно няма да намерите нещо, което вече е внедрено за вашия случай, но можете да коригирате тази библиотека с:
BulkInsertOrDropAsync
Което ще направи нещо като:
WHEN MATCHED THEN UPDATE SET A.ID=A.ID --The ID's are already the same so nothing will happen
WHEN NOT MATCHED THEN INSERT(A.ID,A.NAME,A.CODE,A.DESCRIPTION)
Което всъщност не е ИЗПУСКАНЕ, но ще остави данните ви непокътнати.