Когда я пытаюсь сделать запрос к базе данных PostgreSQL через EntityFramework6.Npgsql
со следующим кодом:Тайм-аут проблемы с PostgreSQL и Entity Framework
using (MyDbContext context = new MyDbContext())
{
var res = (from b in context.mytable select new { b.Name, b.Age });
foreach (var row in res)
{
Console.WriteLine(row.Name + " - " + row.Age);
}
}
я получаю исключение тайм-аут после загрузки нескольких строк со следующей ошибкой:
[Npgsql.NpgsqlException] : {"57014: canceling statement due to statement timeout"}
Message: 57014: canceling statement due to statement timeout
Когда я выполняю ту же операцию при извлечении всех данных в списке, код работает отлично:
using (MyDbContext context = new MyDbContext())
{
var res = (from b in context.mytable select new { b.Name, b.Age }).ToList();
foreach (var row in res)
{
Console.WriteLine(row.Name + " - " + row.Age);
}
}
Я подозреваю, что это связано с тем, как PostgreSQL управляет пулом подключений, но я не знаю, как я мог бы правильно обработать его через Entity Framework.
Я не устанавливаю тайм-аут команды, просто используя значения по умолчанию –
Хорошо, возможно, что 'Console.WriteLine' добавляет достаточную задержку, чтобы вызвать это поведение ... Я бы рекомендовал отключить тайм-ауты Генеральная. –
Добавляя Backend Timeouts = false в строку подключения, он отлично работает. –