今天是速成的第三天,再分享一下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起到效果了,再來看一下資料庫。大家都知道會發生什麼了,對的,異常不再産生資料了,
還是先前産生了那條資料,說明起到效果了。