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 и теперь получаю правильное исключение.