Контекст:
Я выполняю миграцию с Access на SQL Сервер. Это сложная миграция sh, которая выполняется довольно часто, поэтому я интегрировал ее в веб-сайт, чтобы пользователь мог иногда делать это самостоятельно, если это необходимо.
Странность:
Поэтому я сначала решил go с одним контекстом, выполняющим обычные SaveChanges()
в конце каждой области.
Когда дошло ~ 60 тыс. Вставок, для сохранения потребовалось ОЧЕНЬ много времени.
Хорошо, я думал, я просто буду запускать SaveChanges
после каждой записи. Это заняло много времени. Непристойно долго.
Хорошо, поэтому я решил попробовать SaveChangesAsync
и просто не мог заставить его работать. Я был готов выделить для этой области свою собственную Dbcontext
и просто сохранить ее в фоновом режиме, и до финала я бы ее дождался. Не могу заставить это работать. Сначала он выдавал ошибку, а затем просто не сохранял данные.
Хорошо, поэтому следующим шагом было попытаться присвоить этому методу собственный DbContext
. Работал как МЕЧТА.
Затем я дал каждому методу (всего около 13) свои DbContext
. Все было очень быстро.
Итак, мой вопрос: в чем разница между одним DbContext
с 13 SaveChanges()
вызовами и 13 DbContexts
с 13 вызовами на SaveChanges()
?
После запуска SaveChanges()
осталось что-то, что я мог почистить? Или я должен просто go со многими DbContext
? Я просто пытался не открывать новое соединение каждый раз, чтобы сэкономить немного времени, но это не так уж и сложно, но мне все еще не хватает понимания , почему это так. Может ли кто-нибудь научить меня?