#postgresql #exception #.net-core
Вопрос:
У меня есть веб-api .net core. База данных-это PostreSQL. У меня есть простой запрос на публикацию, который создает сущность с двумя полями:
public class ClientDto{ public string Name {get;set;} public int ClientId{get;set;} }
ClientID — внешний ключ FK для клиентов таблиц. Какой-то клиент (почтальон для exapmle) выполняет запрос, но в модели данных отправляет идентификатор клиента, которого нет в бд.
У меня есть глобальный обработчик вывода, и там я обрабатываю исключение бд, но объект исключения не содержит разделенной информации. Я хотел бы показать пользователю красивое сообщение что-то вроде «Клиент с идентификатором = 1 не существует». Какова наилучшая практика обработки исключений бд?
Может быть, перед сохранением объекта в бд мне нужно проверить, существует ли в бд клиент с идентификатором = 1? Но это дополнительный запрос.
Ответ №1:
Может быть, перед сохранением объекта в бд мне нужно проверить, существует ли в бд клиент с идентификатором = 1? Но это дополнительный запрос.
Я бы сделал это.
Если ваш клиент не предоставляет вам хорошую информацию в своем исключении, то вам, вероятно, лучше выполнить дополнительный запрос. Если вы запрашиваете индексированное поле (чего я ожидал бы, учитывая, что вы используете внешний ключ), то это будет очень быстрый запрос.
Выбрасывание и перехват исключений в любом случае обходятся довольно дорого, и я, вероятно, был бы достаточно доволен дополнительным звонком.