Wygląda na to, że masz problem biznesowy. Najpierw musisz zdecydować, co się stanie, gdy masz już podmiot o tym samym identyfikatorze i ktoś spróbuje wstawić nowy (nowe informacje) o tym samym identyfikatorze.
Wygląda na to, że już zdecydowałeś:chcesz porzucić akcję.
To trochę niezwykłe, ponieważ jeśli otrzymasz nowe dane od klientów tego API o encji, która już istniała w Twojej bazie danych -> wygląda to bardziej jak aktualizacja.
Istnieje kilka bibliotek, które mogą zrobić coś podobnego:https://github.com/borisdj/EFCore.BulkExtensions (który obecnie działa tylko z MsSQL)
Korzystanie z tej biblioteki (która jest znana i została już wspomniana przez Microsoft jako narzędzie EF Core:https://docs.microsoft.com/en-us/ef/core/extensions/ ) masz możliwość:
-
Wstaw lub zaktualizuj wszystkie dane (wszystkie kolumny), jeśli znajdziesz jednostkę o tym samym identyfikatorze (Upsert):
context.BulkInsertOrUpdateAsync(entitiesList);
-
Synchronizuj encje ze swojej bazy danych z dowolnymi encjami, które otrzymujesz od klientów:
context.BulkInsertOrUpdateOrDeleteAsync(entitiesList);
Najprawdopodobniej nie znajdziesz czegoś już zaimplementowanego dla swojego przypadku, ale możesz dostosować tę bibliotekę za pomocą:
BulkInsertOrDropAsync
Który zrobi coś takiego:
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)
Co tak naprawdę nie jest DROP, ale pozostawi Twoje dane nienaruszone.