Сценарий:
У нас есть рабочий процесс wcf с клиентом, который НЕ использует поток транзакций.
Рабочий процесс содержит несколько последовательных TransactedReceiveScopes (с использованием корреляции на основе содержимого).
TransactedReceiveScopes содержит пользовательские операции с БД.
Замечания:
Когда мы запускаем профилировщик SQL для первого вызова, мы видим все пользовательские вызовы БД и вызов SaveInstance в трассировке профиля.
Мы заметили, что, хотя SendReply находится в самом конце TransactedReceiveScope, иногда sendreply происходит за 10 секунд до принятия транзакции.
Мы попытались изменить TimeToPersist и TimeToUnload на ноль, но это не имело никакого эффекта. (Трассировка показывает, что SaveInstance в любом случае происходит немедленно, а фиксация кажется отложенной).
Вопросы:
Верны ли наши наблюдения?
В какой момент совершается транзакция? Похоже ли это на сборку мусора - то есть, он фиксируется через некоторое время, когда он не занят?
Существует ли какой-либо способ управления задержкой фиксации или единственный способ сделать это, чтобы использовать поток транзакций от клиента (и тогда все должно фиксироваться, когда клиент фиксирует транзакцию, включая постоянную).