#c# #entity-framework-core #dbcontext
#c# #entity-framework-core #dbcontext
Вопрос:
Я сталкиваюсь со следующей проблемой при выполнении нескольких запросов к de db. Использование Adddbcontext работает нормально, но когда я использую adddbcontextpool, у меня возникает следующая ошибка
Система.Исключение InvalidOperationException: вторая операция, запущенная в этом контексте до завершения предыдущей операции. Обычно это вызвано тем, что разные потоки используют один и тот же экземпляр DbContext. Для получения дополнительной информации о том, как избежать проблем с потоковой обработкой с помощью DbContext, см. https://go.microsoft.com/fwlink/?linkid=2097913
при запуске у меня есть эта конфигурация.
services.AddDbContextPool<context>(options =>
options.UseSqlServer(Configuration.GetConnectionString("context")));
и в моей службе у меня есть следующая строка, которая вызывается несколько раз.
var maxEffectiveDate = await context.Transactions.MaxAsync(x => x.EffectiveDate);
я использую EF core 3.1.9
С уважением
Комментарии:
1. Добро пожаловать в Stackoverflow! Как вы думаете, MaxAsync имеет к этому какое-то отношение?
2. Обычно у вас может возникнуть эта ошибка, когда вы забыли поместить
await
в другое место или при использованииTask.WhenAll
. Точно проверяйте свой код. Один DbContext на поток.3. @SvyatoslavDanyliv как я могу исправить проблему при использовании whenall?
4. Каждая задача, переданная в
WhenAll
list, должна иметь свою собственнуюDbContext
.