Я использую PetaPoco и имею следующий код, чтобы получить список имен из базы данных.PetaPoco не генерирует исключение
public IEnumerable<string> GetManufacturers()
{
try
{
statement = "EXEC P_GET_ALL_MANUFACTURER_NAMES";
var data = db.Query<string>(statement);
return data;
}
catch (SqlException sqlex)
{
LogManager.WriteException(sqlex);
throw;
}
catch (InvalidOperationException ioex)
{
LogManager.WriteException(ioex);
throw;
}
}
Когда хранимая процедура не существует в базе данных, я заметил, что исключение не пойман в блоке улова и записываются в data
переменную, которая записывается на слой API выше где он становится отображаемым как объект JSON.
{
"Message" : "An error has occurred.",
"ExceptionMessage" : "The 'ObjectContent`1' type failed to serialize the response body for content type 'application/json; charset=utf-8'.",
"ExceptionType" : "System.InvalidOperationException",
"StackTrace" : null,
"InnerException" : {
"Message" : "An error has occurred.",
"ExceptionMessage" : "Could not find stored procedure 'P_GET_ALL_MANUFACTURER_NAMES'.",
"ExceptionType" : "System.Data.SqlClient.SqlException",
"StackTrace" : "..."
}
}
Что я здесь делаю неправильно? Как я могу заставить PetaPoco выбросить исключение?
Может быть, так как вы говорите PetaPoco о ожидании строки, и она получает тот, который не видит ничего плохого? Вы пробовали создать класс для хранения возвращаемых данных? – saarrrr
Дерьмо! хорошо, что было глупо. – Animesh
Вы решили? –