Как я могу перехватить исключения UniqueKey Violation с EF6 и SQL Server?

Одна из моих таблиц имеет уникальный ключ, и когда я пытаюсь вставить повторяющуюся запись, она выдает исключение, как и ожидалось. Но мне нужно отличать исключения уникального ключа от других, чтобы я мог настроить сообщение об ошибке для нарушений ограничения уникального ключа.

Все решения, которые я нашел в Интернете, предлагают разыгратьex.InnerException вSystem.Data.SqlClient.SqlException и проверьте, еслиNumber свойство равно 2601 или 2627 следующим образом:

try
{
    _context.SaveChanges();
}
catch (Exception ex)
{
    var sqlException = ex.InnerException as System.Data.SqlClient.SqlException;

    if (sqlException.Number == 2601 || sqlException.Number == 2627)
    {
        ErrorMessage = "Cannot insert duplicate values.";
    }
    else
    {
        ErrorMessage = "Error while saving data.";
    }
}

Но проблема в том, литьеex.InnerException вSystem.Data.SqlClient.SqlException вызывает ошибку приведенияex.InnerException на самом деле типSystem.Data.Entity.Core.UpdateExceptionнеSystem.Data.SqlClient.SqlException.

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

Ответы на вопрос(1)

Ваш ответ на вопрос