У меня есть база данных, которая помимо прочего имеет две таблицы данных: -Entity Framework Запись Mass данных в базу данных
Таблица 1
- ProductID
- ProductName
- ProductDescription
- IsVisible
- IsDeleted
Таблица 2 - ProductPriceID - ProductID - LocationID - Цена
Таблица 2 может содержать много цены в разных местах для каждого продукта в таблице 1. Читаю из файла CSV где детали продукта перечислены в первых столбцах, за которыми следуют 15 столбцов значений цены для 15 местоположений.
Я обнаружил, что при импортировании каждого из почти 10 000 продуктов, которые записывают этот файл в базу данных, сначала записывая продукт, а затем записывая список из 15 цен в Таблицу 2, 10000 раз по сравнению с замедлением импорта вниз HUGELY. Это замедляет его на 2,5 раза по сравнению с «попытками» записать в список из 10000 продуктов, а затем около 132 000 цен на товары. Имея 2 записи в базу данных, значительно ускоряется весь процесс, так как время задержки возникает в базе данных, поэтому писать 2 раза вместо 20 000 раз намного проще.
Я создал списки типов баз данных для каждого объекта и добавил данные к каждому, и это нормально. Проблема заключается в ProductID в таблице 2. Entity Framework не возвращает это, пока я не позову
context.Products.Add(productList);
context.Save();
Но в точке это сохраняется, список цен на продукцию уже создан, но без соответствующего ProductID значений. Когда он экономит, он падает из-за ограничения внешнего ключа.
Есть ли в любом случае Entity Framework для получения ProductID, который будет присвоен этому продукту, не запивая каждый продукт в базу данных? Здесь важны минимальные номера вызовов в базе данных.
У меня есть возможность повторного анализа всех данных из файла, но я также не увлекаюсь этим, поскольку это дополнительное время обработки. Структура файла не сможет быть изменена.
вы можете посмотреть пакет пакетной вставки https: //efbulkinsert.codeplex.com/ – wvisaacs
Блестящее спасибо за ваш совет! Я отправлю ответ, как только я получу где-нибудь. –