WCF RIA 服務 (十一)- 數據 1


當我們在RIA客戶端提供更新、刪除、創建新數據等接口時,經常需要在提交更改之前確定用戶輸入的數據是有效的並且對數據源來說是最新的。WCF RIA Services提供了幾個特性,來允許我們檢查數據的有效性以及確定數據與客戶端代碼的併發性。還提供像使用單一數據實體那樣與複雜的數據關係交互的特 性。
數據批註
當使用數據類時,可以通過對類或方法應用屬性,來指定驗證規則、如何顯示數據、以及設定 實體類之間的關係。System.ComponentModel.DataAnnotations命名空間包含用做數據屬性的類。通過對數據類或成員應用 這些屬性,您可以集中處理數據定義,而不必在多個位置重新應用相同的規則。。
當與自動生成的數據類一起工作時,例如一個實體數據模型或LINQ to SQL 類,不必對生成的類直接應用屬性。應爲這些屬性在下次類重新生成時會丟失。相反,應對數據類創建一個元數據類並把屬性應用在元數據類上。一個元數據類是一 個部分類(Partial class),在數據類中做爲元數據類型來指定的。
數據批註屬性分爲三種類型:驗證,顯示,數據模型。
表 示層模型
可以爲表示層建立一些類型,這些類型沒有直接與數據源表的結構連在一起。例如,我們可以建立一個命名爲 CustomerPeresentation的數據類型,這個數據類型是以數據類Customer、CustomerAddress、Address表爲 基礎的。在表示層中,只出現與表示層有關的值。如果是在數據存貯器中做的改變,那隻能改變表示層中的類型,並不能更改客戶端與數據交互的代碼。RIA Services允許我們通過表示層類型來更新數據。
複合層
RIA Services支持與具有層式結構的數據模型交互。這個層式結構能反映出父親與孩子那樣的複雜關係,例如訂單與訂單詳情。或者遞歸的關係,例如一個職工 模型,其中包含一個叫做ManagerID的字段,這個字段指向職工模型中的其他實體。
繼承
當使用 VS2010和silverlight 4時,RIA Services支持多態繼承模式。例如:你可以創建一個數據結構,它包含一個Customer實體和兩個從它派生的實 體:PublicSectorCustomer和PrivateSectorCustomer。使用Domain operations,可以查詢和更新這些類型。
數據併發機制
當我們允許用戶更新或刪除數據時,會想 在操作前確認這個數據沒有被其他用戶修改過。如果不檢查這個數據是否被修改過,那會在無意中覆蓋了其他人修改的數據,使數據處於矛盾的狀態。
RIA Services會存儲原數據與修改過的數據,然後把他們都傳遞給數據訪問層。數據訪問層竟會比較原數據與數據源中現有的數據。如果相同,就表示數據沒有 被改動過,那麼數據層就更新或刪除數據。如果數據已經改動過,那麼就會把這個衝突存放在已經不再有當前數據實體的Conflict()屬性內。我們也可以 在發生數據衝突時,調用自定義的解決衝突的方法。
如果我們對實體內的某個成員應用了[Exclude]屬性,這個實體是可以在客戶端更新和刪除 的,不要使用這個成員來進行併發檢測。當排除了這個成員,就不會對這個成員存貯正確的原數據,並且更新操作將會失敗。
事務
RIA Services框架不會自動創建事務。但可以在提交改變時添加明確的事務。可以通過重載Submit方法來創建自己的事務。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章