WCF开发工具中对于事务的相关处理是一个比较重要的操作技术,我们在学习的过程中需要对此加强注意力。把事务放到客户端控制,实际上WCF控制事务还是在服务器端的,只不过操作权给了客户端而已。思路和WebService实现是一样的,即用WCF的状态化记住控制事务所需的对象,然后给客户端提供接口来操作这些对象。
在钦南等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供成都网站制作、网站建设 网站设计制作按需设计网站,公司网站建设,企业网站建设,成都品牌网站建设,成都全网营销,成都外贸网站建设,钦南网站建设费用合理。
闲话少说,WCF控制事务代码如下:
服务器端代码:
- [ServiceContract(SessionModeSessionMode=SessionMode.Required)]
- public interface IMyService{
- [OperationContract(IsTerminating=true)]
- void ReleaseSession();
- [OperationContract]
- void BeginTransaction();
- [OperationContract]
- void CommitTransaction();
- [OperationContract]
- void RollbackTransaction();
- [OperationContract]
- int ExecuteNonQuery(string strCmdText);}
- [ServiceBehavior(InstanceContextModeInstanceContextMode=
InstanceContextMode.PerSession)]- public class MyService : IMyService{private string strConnString =
"server=namihei2\\KHOS;database=AEGIS_TEST;- uid=sa;pwd=Password01!";
- private SqlConnection mySqlConnection;
- private SqlTransaction mySqlTransaction;
- public void ReleaseSession(){
- if (mySqlConnection.State == ConnectionState.Open)
{mySqlConnection.Close();- }}
- public void BeginTransaction(){
- mySqlConnection = new SqlConnection(strConnString);
- mySqlConnection.Open();
- mySqlTransaction = mySqlConnection.BeginTransaction();
- }
- public void CommitTransaction(){
- mySqlTransaction.Commit();
- }
- public void RollbackTransaction(){mySqlTransaction.Rollback();
- }
- public int ExecuteNonQuery(string strCmdText)
- {
- try{SqlCommand objSqlCommand = new SqlCommand(strCmdText);
- objSqlCommand.Connection = mySqlConnection;
- objSqlCommand.Transaction = mySqlTransaction;
- return objSqlCommand.ExecuteNonQuery();
- }
- catch (Exception ex){
- throw new FaultException(ex.Message);
- }}}
客户端代码:
- static void Main(string[] args){
- Console.WriteLine("Session Transaction Begin");
- SessionTrans.MyServiceClient serviceProxy =
new ConsoleTest.SessionTrans.MyServiceClient();- try{serviceProxy.BeginTransaction();
- serviceProxy.ExecuteNonQuery("update ATMAccount set Amount = 1000");
- serviceProxy.ExecuteNonQuery("insert into ATMLog
(AccountNumber,OperationType)- values ('888', 'good')");
- //serviceProxy.ExecuteNonQuery("insert into ATMLog
(AccountNumber,OperationType)- values ('888', 'goodgoodgoodgoodgoodgoodgoodgoodgoodgoodgoodgood
goodgoodgoodgoodgood')");- serviceProxy.CommitTransaction();
- }
- catch (Exception ex){Console.WriteLine(ex.Message);
- serviceProxy.RollbackTransaction();
- }
- finally{serviceProxy.ReleaseSession();
- serviceProxy.Close();
- }
- Console.WriteLine("Session Transaction End");
- Console.Read();
以上就是对WCF控制事务的相关介绍。
【编辑推荐】
文章名称:WCF控制事务具体操作代码解读
文章分享:http://www.gawzjz.com/qtweb/news47/173547.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联