成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

WCF程序事務相關定義與實現方法詳解

開發 開發工具
我們在這篇文章中將會通過一段代碼示例來為大家詳細介紹一下WCF程序事務的定義以及具體的實現方法。大家可以從中充分掌握這一應用技術。

WCF開發工具為我們帶來了非常大的好處。它的強大的功能優勢令其在開發領域中占據著非常重要的地位。在這里我們將會為大家詳細介紹一下有關WCF程序事務的相關定義與實現方法,希望能對大家有所幫助。

WCF程序事務定義如下:

 

  1. [ServiceContract(SessionModeSessionMode = SessionMode.Required)]  
  2. public interface IComplexService  
  3. {  
  4. [OperationContract]  
  5. [TransactionFlow(TransactionFlowOption.Mandatory)]  
  6. void ExecuteNoneQuery1(string sql);  
  7. [OperationContract]  
  8. [TransactionFlow(TransactionFlowOption.Mandatory)]  
  9. void ExecuteNoneQuery2(string sql);  
  10. [OperationContract]  
  11. [TransactionFlow(TransactionFlowOption.Mandatory)]  
  12. void ExecuteNoneQuery3(string sql);  

 

WCF程序事務實現如下:

 

  1. [ServiceBehavior(TransactionTimeout = "00:00:45",
    TransactionIsolationLevel = System.Transactions.IsolationLevel.
    Serializable)]  
  2. public class ComplexServiceImplement : IComplexService  
  3. {  
  4. private static void ExecuteNoneQuery(string sql)  
  5. {  
  6. string sqlConnectionString = "Password=sa;User 
    ID=sa;Initial Catalog=ipedf;Data Source=."
    ;  
  7. string oraConnectionString = "User ID=sample;
    Password=sample;Data Source=insapp"
    ;  
  8. using (OracleConnection oraConnection = new OracleConnection
    (oraConnectionString))  
  9. {  
  10. try  
  11. {  
  12. oraConnection.Open();  
  13. OracleCommand cmd = oraConnection.CreateCommand();  
  14. cmd.CommandText = sql;  
  15. cmd.CommandType = CommandType.Text;  
  16. cmd.ExecuteNonQuery();  
  17. }  
  18. catch (Exception e)  
  19. {  
  20. string Debug = e.Message;  
  21. }  
  22. finally  
  23. {  
  24. oraConnection.Close();  
  25. }  
  26. }  
  27. using (SqlConnection sqlConnection = 
    new SqlConnection(sqlConnectionString))  
  28. {  
  29. try  
  30. {  
  31. sqlConnection.Open();  
  32. SqlCommand cmd = sqlConnection.CreateCommand();  
  33. cmd.CommandText = sql;  
  34. cmd.CommandType = CommandType.Text;  
  35. cmd.ExecuteNonQuery();  
  36. }  
  37. catch (Exception e)  
  38. {  
  39. string Debug = e.Message;  
  40. }  
  41. finally  
  42. {  
  43. sqlConnection.Close();  
  44. }  
  45. }  
  46. }  
  47. [OperationBehavior(  
  48. TransactionScopeRequired = trueTransactionAutoComplete = true)]  
  49. public void ExecuteNoneQuery1(string sql)  
  50. {  
  51. ExecuteNoneQuery(sql);  
  52. //OperationContext.Current.SetTransactionComplete();  
  53. }  
  54. [OperationBehavior(  
  55. TransactionScopeRequired = trueTransactionAutoComplete = true)]  
  56. public void ExecuteNoneQuery2(string sql)  
  57. {  
  58. ExecuteNoneQuery(sql);  
  59. //OperationContext.Current.SetTransactionComplete();  
  60. }  
  61. [OperationBehavior(  
  62. TransactionScopeRequired = trueTransactionAutoComplete = true)]  
  63. public void ExecuteNoneQuery3(string sql)  
  64. {  
  65. ExecuteNoneQuery(sql);  
  66. //OperationContext.Current.SetTransactionComplete();  

 

服務端配置如下:

 

  1. < system.serviceModel> 
  2. < !--提供的服務--> 
  3. < services> 
  4. < service name="Wf.Complex.Service.ComplexServiceImplement" 
    behaviorConfiguration="myServiceBehavior"> 
  5. < endpoint address="" binding="wsHttpBinding" bindingConfiguration=
    "transactionalWsatHttpBinding" contract=
    "Wf.Complex.Service.IComplexService"/> 
  6. < endpoint address="mex" binding="mexHttpBinding" 
    contract="IMetadataExchange"/> 
  7. < /service> 
  8. < /services> 
  9. < behaviors> 
  10. < serviceBehaviors> 
  11. < behavior name="myServiceBehavior"> 
  12. < serviceMetadata httpGetEnabled="True"/> 
  13. < serviceDebug includeExceptionDetailInFaults="False"/> 
  14. < /behavior> 
  15. < /serviceBehaviors> 
  16. < /behaviors> 
  17. < bindings> 
  18. < wsHttpBinding> 
  19. < binding name="transactionalWsatHttpBinding" transactionFlow="true"/> 
  20. < /wsHttpBinding> 
  21. < /bindings> 
  22. < /system.serviceModel> 

 

客戶端代碼如下:

 

  1. IComplexService complex = new ComplexServiceClient();  
  2. try  
  3. {  
  4. using (TransactionScope scope = new TransactionScope
    (TransactionScopeOption.Required))  
  5. {  
  6. string sql = "delete from student";  
  7. complex.ExecuteNoneQuery1(sql);  
  8. sql = "insert into student(id,name) values(1,'yeyang_1')";  
  9. complex.ExecuteNoneQuery2(sql);  
  10. sql = "insert into student(id,name) values(2,'yeyang_2')";  
  11. complex.ExecuteNoneQuery3(sql);  
  12. scope.Complete();  
  13. }  
  14. Console.WriteLine("succeed");  
  15. }  
  16. catch (Exception expt)  
  17. {  
  18. Console.WriteLine(expt.Message);  
  19. }  
  20. finally  
  21. {  
  22. (complex as ComplexServiceClient).Close();  

 

運行結果:#t#

服務端的ExecuteNoneQuery方法中using (OracleConnection oraConnection = new OracleConnection(oraConnectionString))代碼塊發生異常,異常內容如下:

"無法加載 DLL“oramts.dll”: 找不到指定的模塊。 (異常來自 HRESULT:0x8007007E)。"

結論:

對于數據庫事務,可以通過WCF程序事務變形的方式來實現,但必須獲取對應數據庫產品的支持,sqlserver產品默認支持,oracle數據庫產品需要考慮本風險,及時規避.

責任編輯:曹凱 來源: CSDN
相關推薦

2010-02-24 17:36:33

WCF集合數據契約

2010-06-11 17:04:17

OSPF路由協議

2010-02-25 13:54:48

WCF安全參數

2010-03-01 16:31:58

WCF實現SOA

2009-12-30 11:16:36

Silverlight

2010-02-24 14:59:52

WCF自定義過濾器

2010-02-24 11:22:04

WCF方法重載

2010-02-26 16:05:14

寄宿WCF服務

2010-02-23 14:48:38

WCF事件通知

2010-03-01 09:19:10

WCF編碼規范

2010-02-26 11:22:16

LitwareHR使用

2010-05-05 23:10:35

負載均衡器

2009-12-21 17:05:59

WCF自托管宿主

2010-02-26 14:39:27

WCF服務寄宿

2018-06-25 10:25:26

區塊鏈跨鏈協議

2009-12-21 18:32:22

關閉WCF鏈接

2009-12-22 16:36:38

WCF重載

2010-08-09 17:42:44

DB2 9.7自治事務

2010-02-26 08:59:10

WCF服務宿主程序

2010-03-01 10:12:54

WCF異步操作
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 99久久久久 | 亚洲综合一区二区三区 | 高清成人免费视频 | 91极品视频| 91人人看| 国产精品国产三级国产aⅴ原创 | 亚洲精品久久久久久久久久久久久 | 99re视频在线 | 亚洲天堂中文字幕 | 精品久久久久久久久久久久 | 国产99视频精品免视看9 | 亚洲成人免费av | 免费观看成人性生生活片 | 日韩不卡在线观看 | 91成人| 欧洲视频一区二区 | 在线视频一区二区三区 | av性色全交蜜桃成熟时 | 韩国精品在线观看 | 欧美成人在线网站 | 欧美精品在线看 | 久草院线 | 99热视| 国产黄色一级电影 | 一区二区在线免费播放 | 一区二区国产在线观看 | 国产黄色在线观看 | 久久伊人青青草 | 一区二区日韩 | 亚洲成人精 | 亚洲欧美成人 | 精品久久国产视频 | 久久久久国产 | 国产精品久久久久久 | 欧美一级欧美一级在线播放 | 精品一区二区三区在线视频 | 巨大黑人极品videos精品 | 午夜影视网 | 久久中文字幕视频 | 欧美日韩视频在线 | 91亚洲精品在线 |