当我尝试通过以下代码通过EntityFramework6.Npgsql
查询PostgreSQL数据库时:
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: 由于语句超时而取消语句执行"}
Message: 57014: 由于语句超时而取消语句执行
当我将所有数据都获取到一个列表中时,执行相同操作的代码可以正常工作:
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
添加了足够的延迟,以至于触发了这种行为...我建议总体上禁用后端超时。 - Shay RojanskyCommand Timeout=0
。 - Ian Turton