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