Различные потоки одновременно с использованием одного и того же экземпляра DBContext. Как отследить корень проблемы?C#

Место общения программистов C#
Ответить
Anonymous
 Различные потоки одновременно с использованием одного и того же экземпляра DBContext. Как отследить корень проблемы?

Сообщение Anonymous »


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();
Я не использую объединенный контекст DB, кстати.


Подробнее здесь: https://stackoverflow.com/questions/794 ... ow-to-trac
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»