Entity Framework Code First で ASP.NET MVC4 を使用しています。主キー「UserId」を持つ「users」というテーブルがあります。このテーブルには 200,000 以上のエントリがある場合があります。
さらに 50 人のユーザーを挿入する必要があります。私はこれを次のようにするかもしれません
foreach(User user in NewUsers){
context.Add(user);
}
dbcontext.SaveChanges();
問題は、これらの新しいユーザーの 1 人以上が DB に既に存在している可能性があることです。それらを追加してから保存しようとすると、エラーがスローされ、有効なものはどれも追加されません。これを行うためにコードを変更できます。
foreach(User user in NewUsers){
if(dbcontext.Users.FirstOrDefault(u => u.UserId) == null)
{
dbcontext.Users.Add(user);
}
}
dbcontext.SaveChanges();
これはうまくいくでしょう。問題は、200,000 以上のエントリ テーブルに対してクエリを 50 回実行する必要があることです。だから私の質問は、重複を無視して、これらのユーザーを挿入する最もパフォーマンス効率の良い方法は何ですか?