Как правильно проверить, существует ли запись БД?

Вопрос может и глупый, но я уже столько всего просмотрел, но ответа так и не нашел, и не много утомился, по этому не пинайте сильно за формулировку вопроса.

Подскажите пожалуйста. Использую базу данных 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 шт):

Автор решения: tym32167

Посылать по одному запросу на каждого человека затратно. Всегда проще сделать 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 останутся только те, кто есть в обоих списках.

→ Ссылка