<div><p>事务是并发控制的基本单位.是一个操作序列,这些操作要么执行,要么都不执行,它是不可分割的单元</p><p>WCF事务模式</p><p>None:不启用事务  </p><p>Client 客户端启用,强制服务参与</p><p>Service 服务启用</p><div style="page-break-after: always;"><span style="display: none;"><!--more-->& nbsp ;</span></div><p>Client/Service:客户端或服务本身启用事务</p><p>WCF事务模式配置</p><p>Client/Service 最常见的一种事务模型,通常由客户端或服务本身启用一个事务,步骤:</p><p>1.选择一个支持事务的Binding 设置TransactionFlow=true</p><p>2.设置TransactionFlow(TransactionFlowOption.Allowed)</p><p>3.操作上启用事务,设置OperationBehavior(TransactionScopeRequired=true)</p><p>Client 客户端强制启用事务,强制服务必须参与事务,步骤:</p><p>1.选择一个支持事务的Binding 设置TransactionFlow=true</p><p>2.设置TransactionFlow(TransactionFlowOption.Mandatory)</p><p>3.操作上启用事务,设置OperationBehavior(TransactionScopeRequired=true)</p><p>Service事务 服务必须启用一个根事务,而且不参与任何外部事务,设置步骤:</p><p>1.选择任何一种Binding,设置TransactionFlow=false</p><p>2.设置TransactionFlow(TransactionFlowOption.NotAllowed)</p><p>3.操作上启用事务,设置OperationBehavior(TransactionScopeRequired=true)</p><p>WCF事务管理协议</p><p>WCF事务传播</p><p>//使用事务域</p><p>using(TransactionScope ts=new TransactionScope())</p><p>{</p><p>     //这里所有代码都会做为一个事务去执行</p><p>     Console.WriteLine("调一下服务");    </p><p>     .....</p><p>     ts.Complete(); //如果正常,通知事务管理器提交事务</p><p>}</p></div>