У меня установлен Entity Framework для обновления таблицы. Обновление перехватывается триггером вместо триггера, который вызывает RAISERROR:
CREATE TRIGGER mySchema.UpdateBusinessObjects
ON mySchema.BusinessObjects
INSTEAD OF UPDATE
AS
RAISERROR(''test error from SQL'',16,1)
RETURN
В моем классе репозитория я пытаюсь перехватить SqlException, сгенерированный RAISERROR в SQL:
public void SaveBusinessObject(BusinessObject b) {
try {
repo.Entry(b).State = EntityState.Modified;
repo.SaveChanges();
} catch (SqlException ex) {
// handle exception here
}
}
Проблема в том, что C # не перехватывает SqlException; оно передается вызывающей стороне как необработанное исключение («SqlException не было обработано пользователем: ошибка теста из SQL»). Какие?!
Похоже, что EF SaveChanges () как-то передает исключение по моему блоку try catch. Я попытался переключить свой оператор catch на catch (Exception ex) на случай, если исключение EF как-то более общее, но я все еще получаю необработанное исключение SqlException. Я что-то упускаю здесь? В чем проблема с методом SaveChanges ()?