Вам нужен давний DataConext? Используйте контейнер LifeTimeManager. Я бы создал контейнер, который находится на уровне приложения (возможно, в вашем Global.asax), а затем использовал бы его для разрешения вашего DataContext для этого конкретного сценария.
Я бы не стал надеяться, что все это сохранится в Cache, вместо этого вы можете посмотреть на возможность выполнения этой задачи асинхронно, если можете.
Надеюсь, это поможет.