2010-10-02 190 views
0

我有一個使用EF和POCO對象的現有Web應用程序。我想通過WCF(JSON)公開一些對象來改善客戶端體驗。我有這個工作正常,但我不確定的是如何處理派生的對象(不知道這是否是正確的術語)或IEnumerable匿名對象,如果你願意。爲wcf創建自定義對象

比方說,我有3個表結構如下所示:

模板

ID 
Template 

ID 
Group 

實例

ID 
TemplateID 
GroupID 

這顯然是一對多的關係。我的導航屬性設置正確,獲取強類型的對象屬性效果很好。但是,如何通過線路發送序列化的匿名類型對象。就像發送等於groupid = 1的所有實例幷包含模板和對象的名稱的對象一樣。

我缺少的東西或我創建WCF另一個類對象,它應該是這樣的:

WCF對象

InstanceID 
TemplateID 
TemplateName 
GroupID 
GroupName 

我想我可以改變我的表佔這但這似乎也是錯誤的。我知道IEnumerable對象不能被序列化,並且我知道扔掉對象可能不是要走的路。我想以正確的方式做到這一點,但我不知道如何去做。

您的建議非常感謝。 Regards

回答

1

根據你在做什麼,我建議看看OData與WCF數據服務。您聲明您希望能夠發送groupid = 1的所有實例 - 在此類型的過濾中,OData非常棒。

如果你想堅持你目前的做法,而不是使用OData,那麼我的第一個問題是你爲什麼要發回匿名類型?你可以做你正在尋找的東西(groupid = 1的所有實例)而不發回匿名類型。在你的select子句中,你只需創建具體對象的新實例,而不是創建匿名類型。如果你的查詢真的只是篩選,並沒有執行任何有意義的投影與選擇匿名類型,那麼我沒有看到任何理由發回你的匿名類型。

+0

我以爲我對OData很熟悉,但我接受了您的建議,並花了一些時間去了解規格,並發現它是我正在尋找的。我想我認爲哪裏最好的做法只暴露數據表,因爲它們存在於數據庫作爲對象。我不知道如何去公開各種對象屬性的集合。 odata.org給出了一些很好的例子。謝謝史蒂夫。 – trevorc 2010-10-04 14:29:25