EF Core: SaveChangesAsync, MARS и «Новая транзакция не разрешена, поскольку в сеансе работают другие потоки» - PullRequest
0 голосов
/ 02 марта 2019

У меня есть веб-API, использующий EF Core 2.0 на сервере SQL Server 2017.

Я недавно заметил, что мы никогда не включали множественные активные наборы результатов (MARS) в строке подключения.Поэтому я включил его, надеясь получить чуть лучшую производительность.

Сначала все выглядело нормально.Однако вскоре наши звонки на dbContext.SaveChangesAsync() начали давать сбой с сообщением «Новая транзакция не разрешена, поскольку в сеансе запущены другие потоки».

Обычно это сообщение возникает, когда кто-то пытается сохранить изменениявнутри петли.Я этого не делаю - неудачный вызов API вставил один элемент в базу данных, сохранил изменения и возвратил.

Я проверил, что все async правильно awaited.Я попытался добавить явный вызов Wait() к своему SaveChangesAsync.Ничего не помогло.

Я снова выключил MARS, и все снова работает.Кто-нибудь знает, что могло вызвать это?

...