У меня есть этот код:
catch (Exception e)
{
try
{
transmitModel.AddAck(transmitBatchId,
"<error><message>" + e.Message + "</message><stack>" + e.StackTrace +
"</stack><Location>FromLisAtOMServer<Location>" +
"<TransmitBatchId>" + message.TransmitBatchId +
"</TransmitBatchId></error>", false, true);
}
// If we fail to log, we don't want that to bubble up...
// We want the real error to do that.
catch (Exception){}
// Re-throw the exception so that the service bus will
// move this off to the error queue.);
throw;
}
Метод AddAck сохранит эту строку в базе данных (используя Entity Framework).
Когда я запускаю это без последнего оператора throw
, он сохраняет мое сообщение об ошибке в базу данных штрафа.
Когда у меня есть throw;
там, он говорит, что сохраняет, но когда я запрашиваю базу данных, его там нет. Я даже могу выполнить запрос сущности через мой контекст данных сразу после сохранения (в коде), и он возвращает значение, как будто оно сохранено (хотя это может быть использование кэшированной версии). Но если я пойду и сделаю запрос, то данных там не будет ...
Я проверил, чтобы убедиться, что никакая другая логика не приводит к удалению значения в исключении.
Есть идеи, что может быть причиной этого?