【问题标题】:.NETCore PostgreSQL "A command is already in progress".NETCore PostgreSQL“命令已​​在进行中”
【发布时间】:2018-11-05 19:36:08
【问题描述】:

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

很遗憾,我找不到任何解决方案。 目前,我将我的数据库上下文注入:

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

我使用实体框架。

【问题讨论】:

  • 我还检查了连接字符串中是否设置了 Pooling=true,但是一旦我可以并发访问 postgresql DB(= 相同具有不同参数的请求)。
  • 如何检查池设置是否正确?

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


【解决方案1】:

仅适用于陷入此困境的人 - 就我而言,在解决此问题的方法末尾进行了简单的代码更改:

reader.close();

reader 是 NpgsqlDataReader 的一个对象。

【讨论】:

    【解决方案2】:

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

    您需要有临时服务请求访问,以便每次调用使用不同的数据库处理程序。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-18
    • 1970-01-01
    • 1970-01-01
    • 2012-09-17
    • 2019-03-29
    • 1970-01-01
    • 2013-11-09
    • 2015-04-20
    相关资源
    最近更新 更多