Share via


共用的實體

實體可以在 WCF RIA Services 應用程式內的數個網域服務之間共用。用戶端可透過每個這些網域服務來存取相同的實體型別,前提是這些網域服務包含在相同的伺服器 DLL 中。共用實體的支援包括以每個 DomainService 型別中可能不同之關聯和具名更新方法為基礎的程式碼產生。共用實體的能力透過更簡單的實體與基礎資料模型之對應,促進更好的大型 RIA Services 應用程式重整和組成。

說明這種共用需要的案例很普遍。例如,考慮個人員工資訊與人力資源 (HR) 員工資料如何共用。Employee 實體可以透過員工個人資訊 DomainService 來公開的,員工可以在此更新個人資訊,例如地址和電話號碼。相同的 Employee 型別也可以透過人力資源 DomainService 來公開,例如在假期日期和薪資支出等 HR 資訊中,也會顯示 Employee 實體詳細資料,例如名稱和 ID。另一個範例是採購服務和目錄服務所使用的產品實體。

請注意,只支援單一伺服器 DLL 內的實體共用。任何數目的網域服務可以參考此 DLL 界限內的相同實體型別。但不支援跨數個伺服器 dll 共用相同實體型別。如需如何在服務網域之間共用實體的指示,請參閱逐步解說:在多個網域服務中共用實體主題。

Important 注意:
共用實體的支援是在 WCF RIA Services V1.0 SP1 中引入的,WCF RIA Services V1.0 並不支援共用實體。

用戶端實體成形

隨著跨多個網域服務共用實體型別的引入,每個使用指定實體型別的 DomainService 都會提供伺服器實體屬性是否在用戶端上產生。產生的用戶端實體將是合併檢視,包含公開此型別之服務所使用的實體屬性。結果就是程式碼產生器會在可存取應用程式 DLL 內每個網域服務的用戶端上建立一個實體型別。用戶端實體的形態可能也會受到 IncludeAttributeExcludeAttribute 屬性使用所影響。具有 IncludeAttribute 的伺服器實體屬性一律會反映在用戶端上。具有 ExcludeAttribute 的伺服器實體屬性絕不會反映在用戶端上。

自訂更新方法與共用項目

網域服務中已套用 [Update(UsingCustomMethod = true)] 屬性的自訂更新方法會反映在用戶端網域內容中,而且客戶實體會包含關聯的自訂更新方法。網域內容有網域服務的自然親和性,但是因為實體可能不共用,使用者需要留意呼叫自訂更新方法時要使用哪一個網域內容。Intellisense 應該會提供這方面的協助。

共用的限制

請牢記三個有關共用實體的限制。

  1. 如上述,目前不支援跨伺服器 dll 共用相同實體型別。

  2. 在繼承階層中,如果階層的分支是共用的,階層的相同層級就必須是共用。

  3. 所有共用特定實體型別的 DomainService 物件對該型別必須有一致的中繼資料描述。這表示,服務的任何自訂 DomainServiceDescriptionProvider 物件必須為該型別指定相同的中繼資料。