Мой текущий проект требует ежедневной синхронизации с внешней системой. Синхронизация основана на сложной структуре файлов импорта, которая анализируется и обрабатывается с использованием обширной бизнес-логики. Из-за бизнес-логики мы решили сделать это в коде .NET и повторно использовать существующие компоненты BL вместо записи той же логики в хранимых процедурах или службах интеграции.
Уровень BL расположен поверх уровня доступа к данным EF 4.0. Текущая реализация обрабатывает пакет импорта, заполняет все изменения в ObjectContext и выполняет SaveChanges в транзакции. Когда я проверяю профилировщик SQL, я вижу, что EF выполняет каждое изменение сущности как одну команду SQL (со своей собственной передачей данных в БД). Более того, похоже, что эти команды выполняются полностью последовательно. Таким образом, у меня есть до 100 000 обращений к базе данных для первоначального импорта и от 10 000 до 50 000 обращений к базе данных для ежедневной синхронизации.
Можно ли как-то пакетно вводить / обновлять / удалять команды самим EF или каким-либо провайдером / расширением?