Как определить правильное нарушение ограничения на SQLite UpdateException?
У меня есть следующая проблема с моей локальной базой данных SQLite. Я пытаюсь обновить данные, хранящиеся в процессе синхронизации, с помощью онлайновой базы данных SQL-сервера. Хотя с синхронизацией нет проблем, я часто сталкиваюсь с ошибками при попытке обновить локальные значения. Например, могут быть нарушения с существующими ограничениями первичного ключа в каждой таблице. С другой стороны, также может быть нарушение уникального ключа на конкретном столе.
У меня вопрос, как выяснить, какой тип ошибки произошел.
Я ловлю обновление базы или вставляю как
catch(UpdateException ue)
{
HandleUpdateException(ue);
}
Метод дескриптора выглядит следующим образом:
private void HandleUpdateException(UpdateException e)
{
// get inner exception as SQLiteException
var innerException = e.InnerException as SQLiteException;
if(innerException != null)
{
switch(innerException.ErrorCode)
{
case SQLiteError.Constraint:
// handle constraint-error here
break;
default:
// log error
break;
}
}
}
Как мне узнать, какая ошибка произошла? Важно знать, потому что обработка PK-нарушения совершенно иная, чем британское нарушение.
Я мог бы попытаться сделать
if(e.Message.Contains("unique")) // ...
или же
if(e.Message.Contains("foreign")) // ...
но я не люблю проверять "магические" строки на наличие ошибок.
Так что любая помощь будет оценена.