2012-05-14 124 views
1

我是否必須爲任何具有ICollection屬性的實體顯式添加[Include]屬性,以便結果LoadOperation回調將使用其集合填充我的實體?WCF RIA SERVICES和EF 4.1

查詢服務中的數據沒有問題,但傳遞給LoadOperation時,它不會添加某個實體的集合。它與服務消息中的序列化/反序列化有關嗎?

如果是,是什麼原因?我已經在WPF中使用了包含DbContext.Includes的EF,但是當我想查詢我的實體集合時,我沒有任何T4模板生成項目的問題。

回答

2

[Include]屬性需要通知WCF編組器來序列化相關實體。具體而言,建議MSDN

這個屬性指定關聯應該是任何 代碼生成的客戶實體的一部分,並且串行化結果給客戶端時,任何相關的實體應 被包括在內。

您仍然需要使用您的DbContext上的query.Include()從數據庫中檢索相關數據。

+0

現貨。它也讓RIA服務知道生成特定的類客戶端。 –

+0

因此,如果我使用Code First,那麼WCF還沒有足夠的智能來使用EF的映射,即這個表有這個表。所以MSDN基本上是說,只要你使用的服務,客戶端將消耗。您的服務類應始終具有[包含]屬性? –

+0

這不一定是因爲WCF不夠智能。一個成熟的應用程序可能有一個非常複雜的對象樹,並且通過網絡對所有可訪問的對象進行編組並不合理。例如,當您通過發票翻頁時,客戶端已經擁有客戶記錄,並且沒有意思將每條查詢都發送給客戶記錄。 –