Npgsql 抛出不正确的异常

Npgsql throws incorrect Exception

我在使用 Npgsql 时遇到了一个奇怪的问题。我尝试删除 table 中具有外键且仍在使用中的记录。 Postgres 的命令行给我一个 Key is still referenced 错误,这是预期的。

但是,如果我尝试在我的应用程序中使用 Npgsql 执行此操作,则会出现以下异常:

Backend sent unrecognized response type: e

根据 Internet 上的消息,这很可能是由多线程引起的,但我没有在该应用程序中使用其他线程。我检查了所有代码都在 "Main Thread".

上运行

然后,如果我捕获到该异常并尝试使用此代码再次查询我的数据库:

DataSet ds = new DataSet();
NpgsqlDataAdapter da = new NpgsqlDataAdapter(cmd);
ds.Reset();
da.Fill(ds);

我得到这个异常:

Cannot write to a BufferedStream while the read buffer is not empty if the underlying stream is not seekable. Ensure that the stream underlying this BufferedStream can seek or avoid interleaving read and write operations on this BufferedStream.

我想要的只是捕获错误,告诉用户他无法删除记录并完成。现在,它无缘无故地关闭了整个应用程序。

这是 Npgsql 中的错误。我将 DLL 更新到版本 2.2.7,现在我得到了正确的异常。