2015-11-24 2 views
0

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

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

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

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

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

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

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

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

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

+0

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

ответ

0

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

Смежные вопросы