Пакетная обработка команд БД в Entity Framework 4.0

Мой текущий проект требует ежедневной синхронизации с внешней системой. Синхронизация основана на сложной файловой структуре импорта, которая анализируется и обрабатывается с использованием обширной бизнес-логики. Из-за бизнес-логики мы решили сделать это в коде .NET и повторно использовать существующие компоненты BL вместо написания той же логики в хранимых процедурах или службах интеграции.

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

Можно ли каким-либо образом пакетировать команды вставки / обновления / удаления самим EF или каким-либо поставщиком / расширением?

15
задан Ladislav Mrnka 10 December 2010 в 09:30
поделиться