WCF返回类型

时间:2010-09-14 15:06:09

标签: c# .net wcf silverlight-4.0

我有一个WCF Web调用,它返回SQL命令的结果。

但是这个SQL命令是动态的,所以我不知道会有多少列和哪些数据类型。

如何通过WCF将结果发送到Silverlight应用程序?

(顺便说一下,我希望能够将这些数据放入数据网格中)

由于

4 个答案:

答案 0 :(得分: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列)。

答案 1 :(得分:0)

非常难看,但是您可以在DataSet中返回结果,或者将DataSet转换为XML字符串(可能会稍微清理一下,例如使用XSLT)。

然而,WCF的一个理想是强类型接口,包括返回的数据。对于弱类型,客户端将需要额外的信息来解释XML。

答案 2 :(得分:0)

这一个在商业世界中一次又一次地出现。

我使用过的(并且报复仇恨)是返回一个DataSet或字符串列表列表,标题信息位于第一行。然后将列名称映射到属性类型。所有这些都涉及大量代码和类型转换。

更好的选择可能是返回固定的最大列数(并非总是使用所有列):

  • 使用column1,column2 ...列创建一个视图作为变量列名称(最大值)
  • 通常添加任何常用的固定列(如主键/ id?)

然后至少你可以静态地将它映射到客户端。基本上,如果可能,最好避免使用变量布局SQL结果。

祝你好运!

答案 3 :(得分:0)

对我来说,这样的架构正在讨论Web服务。您希望如何使用具有未知结构和数据类型的数据?

如果需要返回通用数据,请使用XElement或XmlElement作为返回类型,并将结果转换为XML(手动,序列化,FOR XML选择,...)。