Я использую ASP.NET MVC4 с Entity Framework Code First. У меня есть таблица под названием "пользователи" с первичным ключом "UserId". Эта таблица может содержать 200 000 записей.
Мне нужно вставить еще 50 пользователей. Я мог бы сделать это как
foreach(User user in NewUsers){
context.Add(user);
}
dbcontext.SaveChanges();
Проблема заключается в том, что один или несколько из этих новых пользователей могут уже существовать в БД. Если я их добавлю, а затем попытаюсь сохранить, он выдает сообщение об ошибке, и ни один из действительных не добавляется. Я мог бы изменить код, чтобы сделать это:
foreach(User user in NewUsers){
if(dbcontext.Users.FirstOrDefault(u => u.UserId) == null)
{
dbcontext.Users.Add(user);
}
}
dbcontext.SaveChanges();
который будет работать. Проблема в том, что она должна запускать запрос 50 раз в 200 000 + таблице входа. Поэтому мой вопрос: какой эффективный способ вставки этих пользователей наиболее эффективен, игнорировать любые дубликаты?