Я установил консольное приложение .net core (3.0.0 preview3) и добавил пул контекста db, связанный с моей моделью ef core (2.2.4), и построил поставщика услуг
var serviceProvider = new ServiceCollection()
.AddDbContextPool<CorumClearDispenseContext>(options => options.UseSqlServer("Server=.;Database=*******;Trusted_Connection=True;"))
.BuildServiceProvider();
Затем я зацикливаюсь 10000 раз и делаю запрос к базе данных
IEnumerable<DataLookup> searchData = null;
using (var serviceScope = serviceProvider.CreateScope())
{
var myDBContext = serviceScope.ServiceProvider.GetService<MyDBContext>();
searchData = await myDBContext.DataLookup.Where(p => p.Description.Contains("test")).Skip(0).Take(100).AsNoTracking().ToListAsync();
}
return searchData ;
, теперь при выполнении этого кода я всегда получаю исключение для максимального размера пула тайм-аута.Для ясности, база данных и консольное приложение находятся на одном компьютере.
Может ли кто-нибудь уточнить, правильно ли я понимаю, когда я говорю, что по умолчанию у меня должен быть размер пула 128 и что мои запросы используют ихвсе, и они не заканчиваются достаточно быстро, чтобы dbcontext мог вернуться в пул к тому моменту, когда будет сделан следующий запрос?
Я также предполагаю, что мой код использования верен, и он освободит ресурс обратно в пулоднажды оставив использование?
Каков наилучший подход для обработки / смягчения этого исключения, есть ли способ регулирования запроса до тех пор, пока в пуле не будет доступно одно из них?