WCF RIA 服務 (十七) 資料 7

2021-05-22 04:45:51 字數 2416 閱讀 4548

資料模型中的繼承

wcf ria services允許我們使用做為繼承體系中的一部分的實體。乙個繼承模型包含了乙個從其他資料類派生的資料類。例如,乙個多型繼承模型可以包含乙個 customer實體和兩個從customer派生的實體(publicsectorcustomer和privatesectorcustomer)。 通過ria services,我們可以在domain services中寫乙個返回乙個根型別的集合和從根型別派生的型別的查詢方法。或者,可以寫乙個僅返回派生型別集合的查詢方法。還可以寫修改根型別或任 何派生類的操作方法。

注:只在vs2010和sl4中使用ria services時支援繼承,在vs2008和sl3中不支援。

資料模型

在 服務端專案中,我們可以像定義其他資料類那樣來為繼承模型定義資料類。使用的這個物件模型既可以是從資料層中自動生成的類也可以是手動建立的資料類。

我 們不必非要通過domain service來公開整個層次。相反,在domain service中公開的層次中最後派生的類,是與客戶端互動的根類。從根型別派生出的型別可以向客戶端公開,但父型別不必被公開。在根類中,必須把想要公 開的的任意派生型別包含在knowntypeattribute屬性中。如果想要忽略派生型別,可以不把它包含在knowntypeattribute屬 性中。下面示例了乙個包含基類customer,和兩個派生類privatesectorcustomer,publicsectorcustomer的 手工建立的資料模型。兩個派生類會包含在customer類的knowntypeattribute屬性下,因為customer是資料操作的根型別。

多 態查詢

定義了資料模型後,我們建立乙個對客戶端公開型別的domain service。當在乙個查詢方法中公開乙個型別時,可以返回這個型別和任意派生的型別。例如,乙個返回customer實體集合的查詢可以包含乙個 privatesectorcustomer物件和publicsectorcustomer物件。還可以指定乙個只返回乙個派生型別的查詢方法。下面示 例了返回不同型別的查詢方法。

為 客戶端專案生成**

當生成解決方案時,在客戶端會為已經在domain service中公開的繼承體系生成**。體系的根類被生成並派生於entity類。每個派生的類都是生成和派生於根類。在domaincontext類 中,只生成乙個entity(tentity)成員屬性,並且它需要根型別的物件。為每乙個查詢都生成了entityquery物件,它返回在 domain service操作中指定的型別。

下面示例了乙個在客戶端為查詢方法生成的簡單版本的**。它並沒有包含所有生成類中的**,只是 想強調一些重要的成員屬性和方法。

customers

public entityquerygetcustomersquery();

public entityquerygetcustomersbygsaregionquery(string region);

public entityquerygetcustomersbystatequery(string state);

public entityquerygetprivatesectorbypostalcodequery(string postalcode);}

數 據修改

可以為繼承體系中的更新、插入和刪除物件新增domain service方法。如同查詢方法,可以為操作指定乙個根型別或乙個派生型別。然而,任何對派生類的更新、插入或刪除操作也都應該可以在根型別中執行。可 以在體系中為任何型別新增named updat

方法。會為在方法中指定的型別在客戶端生成相應的named update方法。

下面的 **示例了兩個更新方法和乙個named update方法的簽名。

關 聯

可以在根類或派生類中定義關聯。我們在練歌資料類之間應用associationattribute屬性來定義乙個關聯。在 資料模型的例子中,在customer和order之間定義了乙個關聯。如果對根型別應用了關聯,那麼所有的派生型別也包含這個關聯。

使 用繼承的基本規則

實 體繼承體系

定義繼承體系使用下面的規則:

domainservice 操作

在繼承體系中使用下面規則定義domain service 操作

tpyedescriptionprovider

下 面的規則應用於typedescriptionprovider(tdp)

生 成的**

對體系中的實體,以下的規則應用於客戶端的生成**

發貼者 zhao

WCF RIA 服務 (十四) 資料 4

如何自定 決資料併發性衝突 wcf ria services框架把原值和更改後的值一起傳遞給資料訪問層。這就允許資料訪問層在提交資料更改之前檢測資料併發性衝突。資料訪問層是通過檢測資料來源中 的當前值是否與domain操作中檢索到的值一致來判斷衝突的。我們可以為乙個特定的實體自定義如何解決資料併發性...

WCF RIA 服務 (1 安裝篇)

一 簡介 wcf ria services主要用於簡化n層結構的silverlightria應用程式的開發。當開發乙個n層結構的silverlightria應用程式時,乙個通常的問題就是在中間層和表現層之間協調應用邏輯。為了建立更好的使用者體驗,你可能想要你的ria客戶端了解在伺服器上的應用邏輯,但...

WCF RIA 服務 (二) 解決方案結構

上節大概介紹了一下 wcf ria 服務,這次介紹下整個解決方案的結構。當建立應用程式時,wcf ria服務可以幫你建立滿足各種各樣情況的解決方案。例如只是在中間層訪問很少domain services的silverlight應用程式。更複雜的例子可能是幾個silverlight程式都連線到乙個提供...