Итак, мне нужно импортировать (в настоящее время) около 15 тыс. Товаров. Каждый продукт имеет 20 свойств, а также информацию, относящуюся к другим таблицам - например, склад, используемый для этого продукта. Чтобы избежать сохранения одной и той же информации несколько раз, я создал Warehouse-таблицу, которая содержит адрес, имя и идентификатор. Имя и адрес указаны в списке, который я запускаю.
Теперь есть другие связанные данные, связанные с продуктом, которые могут или не могут существовать в базе данных.
В настоящее время я делаю это, проверяя, существуют ли связанные записи по мере их поступления, а если нет, я добавляю их в базу данных, используя другой контекст, и возвращаю идентификатор вновь созданного объекта. Фактические продукты добавляются в «основной» контекст и сохраняются после добавления всех. Как то так:
using (var context = new MyContext())
{
foreach (var product in productList)
{
CheckWarehouse(product);
CreateEntityFromProduct(product);
}
context.SaveChanges();
}
Хотя это в некоторой степени работает с текущим объемом данных, оно все еще довольно медленное, поэтому мне интересно, что может быть лучше для этого?