Я пробовал несколько разных способов, чтобы заставить простой набор транзакций работать для простой ситуации клиент / сервер WCF. Мой WCF-сервер имеет объявление уровня класса класса Entity Framework для доступа к моей базе данных и несколько методов для изменения данных и метод SaveChanges. Я использую Oracle Data Access (ODP.NET).
Например, я хочу вызвать модификацию с клиента, а затем отдельный вызов, чтобы сохранить изменения в службе WCF. Не работает По сути, все выполняется нормально, но когда сделан второй вызов для сохранения изменений, служба WCF больше не имеет исходного контекста и, следовательно, изменения не сохраняются (и, следовательно, предыдущий вызов, который внес изменения, автоматически откатывается) .
Я использую область транзакции вокруг обеих операций в моем клиенте и выполняю Complete () после выполнения. Мои сервисы WCF имеют OperationContract, которые используют [TransactionFlow(TransactionFlowOption.Mandatory)]
, а эти реализации методов используют [OperationBehavior(TransactionScopeRequired = true, TransactionAutoComplete = true)]
. Наконец, моя веб-конфигурация настроена с помощью wsHttpBinding, для свойства transactionFlow
которого установлено значение True.
Мне не повезло. Независимо от того, что я пытаюсь, когда я пытаюсь запустить службу для последующего сохранения, контекст EF уже обновляется.