Parece que você tem um problema de negócios no lugar. 1º você precisa decidir o que acontecerá quando você já tiver uma entidade com o mesmo id e alguém tentar inserir uma nova (nova informação) com o mesmo id.
Parece que você já decidiu:você quer desistir da ação.
Isso é de alguma forma incomum porque se você receber alguns novos dados de clientes dessa API sobre uma entidade que já existia em seu banco de dados -> isso se parece mais com um Update.
Existem algumas bibliotecas que podem fazer algo semelhante:https://github.com/borisdj/EFCore.BulkExtensions (que atualmente está trabalhando apenas com MsSQL)
Usando esta biblioteca (que é conhecida e já foi mencionada pela Microsoft como sendo uma EF Core Tool:https://docs.microsoft.com/en-us/ef/core/extensions/ ) você tem a possibilidade de:
-
Insira ou atualize todos os dados (todas as colunas) se você encontrar uma entidade com o mesmo id (Upsert):
context.BulkInsertOrUpdateAsync(entitiesList);
-
Sincronize entidades do seu banco de dados com quaisquer entidades que você receba dos clientes:
context.BulkInsertOrUpdateOrDeleteAsync(entitiesList);
Muito provavelmente você não encontrará algo já implementado para o seu caso, mas pode ajustar esta biblioteca com:
BulkInsertOrDropAsync
Que fará algo como:
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)
O que não é realmente um DROP, mas deixará seus dados intactos.