Хотя проверка может предотвратить большинство ошибок SQL
, существуют ситуации, которые просто невозможно предотвратить. Я могу думать о двух из них: уникальность некоторого столбца и неправильный внешний ключ: проверка не может быть эффективной, так как объект может быть создан или удален другими сторонами только после проверки и до вставки БД. Таким образом, есть (как минимум) две SQL
ошибки, которые должны привести к сообщению о недопустимом вводе пользователем.
SQLException
имеет свойство Number
для типа ошибки, но я не знаю, как определить, какой столбец дублирован или какой внешний ключ неправильный, не пытаясь проанализировать фактический текст сообщения об ошибке, что происходит с быть локализованным.
Можно ли как-то идентифицировать ошибочный столбец, кроме анализа сообщения об ошибке (что означает, по крайней мере, строго выбрать язык для SQL Server и всегда использовать его)?
редактирование:
Я должен упомянуть, что я из RubyOnRails, где такой подход: давайте притворимся, что db не существует: никаких ограничений, никаких внешних ключей с применением db и т. Д. По мере приближения к ASP.NET MVC
, я бы как избавиться от уклонов рельсов, и принять тот факт, что БД действительно существует.