我一直在尝试几种不同的方法,以便获得一组简单的事务来处理简单的WCF客户端/服务器情况.我的WCF服务器具有用于数据库访问的Entity Framework类的类级别声明,以及用于修改数据的几种方法和用于SaveChanges的方法.我正在使用Oracle数据访问(ODP.NET).
例如,我想从客户端调用修改,然后单独调用以保存WCF服务中的更改.它不起作用.基本上,一切都运行良好,但是当第二次调用保存更改时,WCF服务不再具有原始上下文,因此不会保存任何更改(因此,之前的调用会自动回滚进行更改) .
我在我的客户端围绕两个操作使用Transaction范围,并在完成后执行Complete().我的WCF服务具有使用的OperationContract [TransactionFlow(TransactionFlowOption.Mandatory)]和那些方法实现使用[OperationBehavior(TransactionScopeRequired = true, TransactionAutoComplete = true)].最后,我的web配置配置了一个wsHttpBinding,其transactionFlow属性设置为True.
我没有运气.无论我尝试什么,当我尝试点击服务进行后续保存时,EF上下文已经更新.