Sembra che tu abbia un problema di affari in atto. In primo luogo è necessario decidere cosa accadrà quando si dispone già di un'entità con lo stesso ID e qualcuno tenta di inserirne una nuova (nuove informazioni) con lo stesso ID.
Sembra che tu abbia già deciso:vuoi abbandonare l'azione.
Questo è in qualche modo insolito perché se ricevi nuovi dati dai client di quell'API su un'entità che esisteva già nel tuo database -> sembra più un aggiornamento.
Esistono alcune librerie che possono fare qualcosa di simile:https://github.com/borisdj/EFCore.BulkExtensions (che attualmente funziona solo con MsSQL)
Utilizzo di questa libreria (che è nota ed è già stata menzionata da Microsoft come strumento EF Core:https://docs.microsoft.com/en-us/ef/core/extensions/ ) hai la possibilità di:
-
Inserisci o Aggiorna tutti i dati (tutte le colonne) se trovi un'entità con lo stesso ID (Upsert):
context.BulkInsertOrUpdateAsync(entitiesList);
-
Sincronizza le entità dal tuo database con le entità che ricevi dai clienti:
context.BulkInsertOrUpdateOrDeleteAsync(entitiesList);
Molto probabilmente non troverai qualcosa di già implementato per il tuo caso, ma puoi modificare questa libreria con:
BulkInsertOrDropAsync
Che farà qualcosa come:
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)
Che non è proprio un DROP, ma lascerà intatti i tuoi dati.