.NETCore PostgreSQL"命令已经在进行中"

时间:2018-01-14 22:36:59

标签: postgresql entity-framework asynchronous asp.net-core

我正在.NETCore上开发一个访问POSTGRESQL数据库的WebAPI。 我对PostgreSQL的非MARS支持感到麻烦。 NPGSQL无法支持来自同一实例的多个连接(如EntityFramework DbContext lifecycle + Postgres: "An operation is already in progress."中所述)。对于异步管理,这是阻塞。

不幸的是,我找不到任何解决方案。 目前,我注入了我的数据库上下文:

services.AddEntityFrameworkNpgsql().AddDbContextPool<DBApiContext>(opt => opt.UseNpgsql('connectionString');

我使用EntityFramework。

2 个答案:

答案 0 :(得分:3)

对于谁可能感兴趣:我的问题是关于服务范围和依赖注入。 请求者不是一个临时服务,因此对于每个请求,即使是并行,它也试图访问数据库。 Postgresql不支持MARS,然后第二个请求被拒绝。

您需要具有请求访问权限的临时服务,因为每个调用都使用不同的数据库处理程序。

答案 1 :(得分:1)

仅适合那些陷入困境的人-就我而言,这是在方法末尾进行的简单代码更改,以解决此问题:

reader.close();

reader是NpgsqlDataReader的对象。