ビジネス上の問題があるようです。まず、同じIDのエンティティが既に存在し、誰かが同じIDの新しいエンティティ(新しい情報)を挿入しようとした場合にどうなるかを決定する必要があります。
あなたはすでに決定したようです:あなたはアクションをドロップしたいです。
そのAPIのクライアントから、データベースにすでに存在しているエンティティに関する新しいデータを受け取った場合、それは更新のように見えるため、これはどういうわけか珍しいことです。
同様のことを実行できるライブラリがいくつかあります: https://github.com/borisdj/EFCore.BulkExtensions (現在、MsSQLでのみ機能しています)
このライブラリの使用(これは既知のライブラリであり、MicrosoftによってEFコアツールとしてすでに言及されています: https://docs.microsoft.com/en-us/ef/core/extensions/ )次の可能性があります:
-
同じID(アップサート)のエンティティが見つかった場合は、すべてのデータ(すべての列)を挿入または更新します:
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)
これは実際にはドロップではありませんが、データはそのまま残ります。