Как правильно проверить, существует ли запись БД?
Вопрос может и глупый, но я уже столько всего просмотрел, но ответа так и не нашел, и не много утомился, по этому не пинайте сильно за формулировку вопроса.
Подскажите пожалуйста. Использую базу данных MySQL и язык программирования C# (EntityFrameworkCore).
Я разбираю xlsx документ, беру из него по 10000 строк, складываю их в List и передаю в функцию записи.
Person это класс, со структурой таблицы Person MySQl.
Как правильно сделать проверку, существует ли такая запись в БД?
Или есть способ сравнить весь список целиком с данными в базе?
Так как если делать, проверку через
foreach(Person item in Persons)
{
Person pers = context.Person.Where(x=>x.fullName==item.fullName && x.idFileTable==item.idFileTable).FirstOrDefault();
}
Это будет долгий и упорный процесс.
Ответы (1 шт):
Посылать по одному запросу на каждого человека затратно. Всегда проще сделать 1 запрос в БД и после делать с данными что хочется.
Пример может не идеальный, но должно сработать как то так
var names = Persons.Select(x=>fullName).ToList();
var personsFromDb = context.Person.Where(x=>names.Contains(x.fullName)).ToList();
personsFromDb = personsFromDb.Where(x=>Persons.Any(item=>x.fullName == item.fullName && x.idFileTable == item.idFileTable)).ToList();
В итоге в personsFromDb останутся только те, кто есть в обоих списках.