Выход из распределенной транзакции для одного из моих Entity Framework ObjectContexts - PullRequest
3 голосов
/ 15 марта 2012

Я использую NServiceBus с распределенными транзакциями. Обычно это работает фантастически. Либо мое сообщение успешно, либо не удалось. Все или ничего.

Однако я также пытаюсь записать диагностические данные в свою базу данных. Это делается на отдельном ObjectContext. Для этого я хотел бы сохранить его в базе данных независимо от успеха или неудачи распределенной транзакции.

Есть ли способ подключить один (и только один) контекст данных к базе данных вне распределенной транзакции? (А остальные из них оставить?)

Ответы [ 3 ]

5 голосов
/ 15 марта 2012

Попробуйте, чтобы подавить вашу распределенную транзакцию окружения для аудита:

using (new TransactionScope(TransactionScopeOption.Suppress))
{
    // Create logging context and audit your data
}
1 голос
/ 16 марта 2012

Один из вариантов (если используется 3.0) - создать UoW:

http://andreasohlund.net/2011/11/21/unit-of-work-in-nservicebus-3-0/

И там подавить транзакцию и выполнить регистрацию.

0 голосов
/ 16 марта 2012

NSB имеет встроенный способ аудита . Я бы порекомендовал включить это и работать с журналом регистрации / аудита в другой конечной точке.

...