Npgsql выдает неверное исключение

У меня странная проблема с Npgsql, Я пытаюсь удалить запись в таблице, которая имеет внешний ключ и все еще используется. Командная строка Postgres дает мне Key is still referenced ошибка, которая ожидается.

Однако, если я попытаюсь сделать это с Npgsql из моего приложения я получаю следующее исключение:

Сервер отправил нераспознанный тип ответа: e

Согласно источникам в Интернете, это, скорее всего, вызвано многопоточностью, но я не использую другую ветку в этом приложении. Я проверил, и весь код работает в "Основном потоке".

Затем, если я поймаю это исключение и попытаюсь снова запросить мою базу данных с этим кодом:

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

Я получаю это исключение:

Невозможно выполнить запись в BufferedStream, пока буфер чтения не пуст, если основной поток не доступен для поиска. Убедитесь, что поток, лежащий в основе этого BufferedStream, может искать или избегать чередования операций чтения и записи в этом BufferedStream.

Все, что я хочу, просто поймать ошибку, сказать пользователю, что он не может удалить запись, и все готово. Теперь, это без всякой уважительной причины.

1 ответ

Это ошибка в Npgsql, Я обновил DLL до версии 2.2.7 и теперь получаю правильное исключение.

Другие вопросы по тегам