.net core обрабатывает исключения базы данных PostreSQL

#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? Но это дополнительный запрос.

Я бы сделал это.

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

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