删除并重新创建数据库后,NpgsqlConnection 失败

时间:2021-04-29 13:53:33

标签: postgresql npgsql

对于使用 PostgreSQL 数据库运行的 XUnit 集成测试自动化项目,我创建了一个脚本,该脚本首先删除然后重新创建数据库,以便每个测试都可以使用相同的数据集作为输入开始。当我通过测试资源管理器单独(一个接一个)运行测试时,它们都运行良好。当我尝试在同一个测试运行中运行它们时,它在正在执行的第二个测试中失败

每个测试的结构是:

  • 使用删除、创建和填充数据的脚本初始化新数据库
  • 运行测试
  • 打开一个到数据库的 NpgsqlConnection
  • 查询数据库并检查结果内容是否符合我的期望

第二次导致 Npgsql.NpgsqlException : 写入流时发生异常

好像是第二次创建连接的时候,NpgSql 看到是之前使用过的连接,所以重用了。但它已被丢弃,无法再次使用。 例如,如果我在创建第一个连接后不使用命令查询而仅在第二个连接中它也可以正常工作。 我希望有人可以就如何处理这个问题给我一个很好的建议。这是我第一次在我的一个项目中使用 PostgreSQL。我也许可以使用 PostgreSQL 的实体框架数据提供程序,但我会先尝试询问这个...

enter image description here

1 个答案:

答案 0 :(得分:0)

我将 Pooling=false 添加到连接字符串,现在它可以工作了。我现在可以在同一个测试中随意删除和重新创建数据库,只需从 C# 代码重新连接到它

enter image description here