Я всегда считал стандартной практикой помещать любой код взаимодействия с базой данных в слой данных с блоками try...catch
, чтобы вы могли цивилизованно обрабатывать такие ситуации.
Я непроверяйте каждую возможность, но возможность регистрировать исключения окажется полезной при поддержке вашего кода в долгосрочной перспективе.
В случае работающей системы всегда полезно иметь такую информацию, особенно когда вы можете обвинить клиентавозиться с вещами, которых у них не должно быть.
edit
Как я уже говорил, вы не можете проверять каждую возможность, но вы можете перехватывать исключения, вызванные ситуацияминапример приведение значения к перечислению, которое не существует.
На самом деле невозможно проверить значения, выходящие за пределы диапазона, кроме предела, например, поле неожиданно возвращается как DBNull
или не удается преобразовать тип данных базы данных в тип данных модели.В таком случае обработка ошибки и представление пользователю сообщения об ошибке или индикатора типа «VALUE UNKNOWN» должны быть в порядке.
Проблема в том, что у вас есть пользователь, который изменяет данные, не используя ваше приложение.
Возможно, вы уже внедрили IDataErrorInfo
в своей модели данных, специально для проверки ввода пользователя, если не посмотрите здесь в качестве примера, или, возможно, что-то подобное.
Но вы не можете справиться с тем, что «поврежденные» данные являются действительными значениями, т. Е. Если ваше поле enum было изменено на правильное значение, но логически неверное, вы не узнаете, пока не воспользуетесь им, что оно неверное.
Прагматичный подход должен быть принят, поскольку вы правильно сказали, что проверка тысяч или даже сотен значений, извлекаемых из базы данных, будет иметь неприемлемое влияние на производительность.
Но, говоря:ошибка, пожалуйста, свяжитесь с вашим системным администратором "или что-то подобное, на мой взгляд, вполне приемлемо.