我正在.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。
答案 0 :(得分:3)
对于谁可能感兴趣:我的问题是关于服务范围和依赖注入。 请求者不是一个临时服务,因此对于每个请求,即使是并行,它也试图访问数据库。 Postgresql不支持MARS,然后第二个请求被拒绝。
您需要具有请求访问权限的临时服务,因为每个调用都使用不同的数据库处理程序。
答案 1 :(得分:1)
仅适合那些陷入困境的人-就我而言,这是在方法末尾进行的简单代码更改,以解决此问题:
reader.close();
reader是NpgsqlDataReader的对象。