system.invalidoperationException: Вторая операция была начата на
этого экземпляра контекста до выполнения предыдущей операции. Это
обычно вызвано различными потоками одновременно с использованием одного и того же экземпляра
dbcontext. Для получения дополнительной информации о том, как избежать потоков
с DBContext, см. Br /> Upd: Чтобы быть ясным, я следил за ссылкой выше, прочитайте, как работает DBContext, и просмотрел свой код. Теперь я ищу программные способы найти ошибку. Я думаю о каким -то журнале, если несколько потоков используют один и тот же экземпляр DBContext одновременно. Подводные камни, описанные в документах. < /p>
Кодовая база слишком велика, чтобы поделиться здесь. Короче говоря, есть фоновое обслуживание , которое раскрывает 20 потоков с помощью task.run () . Каждый поток создает новую область такого: < /p>
Код: Выделить всё
public IMessageHandler Create()
{
var scope = serviceProvider.CreateScope();
return scope.ServiceProvider.GetRequiredKeyedService(ServiceKeys.XYZ);
}
< /code>
Мое понимание - это новый экземпляр DBContext должен быть создан для каждой области, потому что все экземпляры, которые запрашивают DBContext, зарегистрированы как Scoped: < /p>
services.AddDbContext();
Подробнее здесь: https://stackoverflow.com/questions/794 ... ow-to-trac
Мобильная версия