我有一个WCF Web调用,它返回SQL命令的结果。
但是这个SQL命令是动态的,所以我不知道会有多少列和哪些数据类型。
如何通过WCF将结果发送到Silverlight应用程序?
(顺便说一下,我希望能够将这些数据放入数据网格中)
由于
答案 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或字符串列表列表,标题信息位于第一行。然后将列名称映射到属性类型。所有这些都涉及大量代码和类型转换。
更好的选择可能是返回固定的最大列数(并非总是使用所有列):
然后至少你可以静态地将它映射到客户端。基本上,如果可能,最好避免使用变量布局SQL结果。
祝你好运!答案 3 :(得分:0)
对我来说,这样的架构正在讨论Web服务。您希望如何使用具有未知结构和数据类型的数据?
如果需要返回通用数据,请使用XElement或XmlElement作为返回类型,并将结果转换为XML(手动,序列化,FOR XML选择,...)。