天天看點

wcf系列學習5天速成——第三天 事務的使用

今天是速成的第三天,再分享一下WCF中比較常用的一種技術,也就是”事務“。

在B2B的項目中,一般使用者注冊後,就有一個屬于自己的店鋪,此時,我們就要插入兩張表, User和Shop表。

當然,要麼插入成功,要麼全失敗。

第一步: 首先看一下項目的結構圖:

第二步: 準備工作,我們建立Commerce資料庫,用EF去映射,然後建立ServiceWCF類庫,具體步驟就省略,

            這一塊不懂可以留言。

第三步:建立一個Model類庫。建立兩個實體類Shop和User,當然自定義類型在WCF中傳輸,

           必須在類上加上【DataContract】,屬性上加【DataMember】。

   Shop.cs

 User.cs

第四步:然後在ServiceWCF類庫中建立兩個檔案Seller.cs 和 ISeller.cs.

        ISeller.cs:

     Seller.cs

 TransactionScopeRequired: 告訴ServiceHost自托管服務,進入我的方法,必須給我加上事務。

 TransactionAutoComplete:   方法執行中,如果沒有抛出異常,則自動送出。

第五步: 建立Host來承載了,配置AppConfig,這些細節就不再說了。

第六步:開啟WCF服務,建立ServiceClient類庫,然後用信道生成執行個體。

最後就是測試了:

    首先:走正常流程。client.Add方法調用伺服器端,運作效果如圖所示:

是的,資料已經正常插入成功,對Client端而言,這個操作是透明的。

  然後:  我們在Seller類中的Add方法中故意加入異常。看效果咋樣。

截圖如下:

哈哈,抛出異常了,我的Exception起到效果了,再來看一下資料庫。大家都知道會發生什麼了,對的,異常不再産生資料了,

        還是先前産生了那條資料,說明起到效果了。