2010-09-14 106 views
0

我有一個WCF Web調用,它返回SQL命令的結果。WCF返回類型

但是,這個SQL命令是動態的,所以我不知道會有多少列和哪些數據類型。

我如何將結果通過WCF傳遞給Silverlight應用程序?

(順便說一下我,然後希望能夠把這個數據到數據網格)

感謝

+0

使用強類型的東西,比如所謂的POCO(只是普通的對象,映射到數據庫) – Andrey 2010-09-14 15:14:14

回答

1
Name Age Height Income 
Adam 50 175  88 
Paul 20 166  75 
Ranj 19 188  69 
Omar 25 200  45 

變爲:

Key Attribute Value 
Adam Age   50 
Adam Height  175 
Adam Income  88 
Paul Age   20 
Paul Height  175 
Paul Income  75 

等等

基本上你壓扁數據表列的任意數量到數據表僅會3列(或4,如果你想要包含數據類型)。

+0

然後你會怎麼把它放到一個datagrid? – 2010-09-15 10:48:09

+0

您可以嘗試旋轉網格。我相信DevExpress確實是支點。 – 2010-09-16 08:37:48

0

很醜陋,但你可以在DataSet返回結果,或數據集轉換爲XML字符串(可能用XSLT清理一下)。

然而,WCF的理想之一是強類型接口,包括返回的數據。由於鍵入較弱,客戶需要額外的信息來解釋XML。

0

這個在商業世界裏一次又一次地出現。

我用過的一個(仇恨復仇)是返回一個DataSet或者列表中的頭部信息在第一行的字符串列表。然後將列名映射到屬性類型。所有這些都涉及大量的代碼和類型轉換。

一個更好的選擇可能是返回列一個固定的最大數量(不是所有的人總是習慣):

  • 創建列1,列2 ...列的視圖作爲變量列名(到你最大)
  • 任何常見的固定列(如主鍵/ ID?)通常加入

那麼,你至少可以跨到客戶端,靜態映射它。如果可能的話,最好避免使用可變佈局SQL結果。

祝你好運!

0

對我來說,這樣的體系結構是敲擊網絡服務。你想如何使用未知結構和數據類型的數據?

如果您需要返回通用數據,請使用XElement或XmlElement作爲操作的返回類型,並將結果轉換爲XML(手動,序列化,FOR XML select,...)。