Как мне перехватить оператор, конфликтующий со ссылочным ограничением FK

#c# #mysql #exception

#c# #mysql #исключение

Вопрос:

оператор конфликтует со ССЫЛОЧНЫМ ограничением

Я хотел бы знать, как перехватить исключение для этого сообщения об ошибке. Я попытался удалить запись из таблицы, но в таблице есть FK из другой таблицы. Заранее благодарю вас!

Комментарии:

1. проверьте пример.Сообщение. ToLower().Cotains(«оператор конфликтует со ссылочным ограничением») и выдает пользовательское сообщение об ошибке, понятное конечному пользователю.

2. Я думаю, вам нужно будет предоставить больше информации. Я предполагаю, что, исходя из контекста, вы хотите идентифицировать запись, которая имеет ограничение FK при удалении нескольких строк? В какой среде это происходит? Вы можете профилировать, чтобы увидеть, что попадает в БД, вы можете выполнить отладку, чтобы получить список StreetIds попыток удаления, а затем запросить таблицу FK с этими идентификаторами и т.д. Или вы имеете в виду буквально перехватывать исключение, чтобы не выполнять YSOD? С какой целью? Чего вы надеетесь достичь, а не показывать эту страницу с ошибкой?

Ответ №1:

Попробуйте приведенный ниже код:

 try
{
     //Your code block to delete the record.
}
catch(Exception ex)
{
     if (ex.Message.ToLower().Contains("statement conflicted with the reference constraint"))
     {
          //Show custom error message as "need to delete parent value before delete this record."
     }
}
 

Комментарии:

1. Спасибо @Balagurunathan, но запрос получен из sqldatasource, используемого в gridview.