Как заставить Entity Framework и WCF работать с транзакциями? Хорошо… в чем секрет?

Я пробовал несколько разных способов заставить простой набор транзакций работать в простой ситуации клиент / сервер 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 уже обновляется.

5
задан Ladislav Mrnka 22 November 2011 в 09:30
поделиться