我有一个WCF Web调用,它返回SQL命令的结果。WCF返回类型
但是,这个SQL命令是动态的,所以我不知道会有多少列和哪些数据类型。
我如何将结果通过WCF传递给Silverlight应用程序?
(顺便说一下我,然后希望能够把这个数据到数据网格)
感谢
我有一个WCF Web调用,它返回SQL命令的结果。WCF返回类型
但是,这个SQL命令是动态的,所以我不知道会有多少列和哪些数据类型。
我如何将结果通过WCF传递给Silverlight应用程序?
(顺便说一下我,然后希望能够把这个数据到数据网格)
感谢
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,如果你想要包含数据类型)。
然后你会怎么把它放到一个datagrid? – 2010-09-15 10:48:09
您可以尝试旋转网格。我相信DevExpress确实是支点。 – 2010-09-16 08:37:48
很丑陋,但你可以在DataSet返回结果,或数据集转换为XML字符串(可能用XSLT清理一下)。
然而,WCF的理想之一是强类型接口,包括返回的数据。由于键入较弱,客户需要额外的信息来解释XML。
这个在商业世界里一次又一次地出现。
我用过的一个(仇恨复仇)是返回一个DataSet或者列表中的头部信息在第一行的字符串列表。然后将列名映射到属性类型。所有这些都涉及大量的代码和类型转换。
一个更好的选择可能是返回列一个固定的最大数量(不是所有的人总是习惯):
那么,你至少可以跨到客户端,静态映射它。如果可能的话,最好避免使用可变布局SQL结果。
祝你好运!
对我来说,这样的体系结构是敲击网络服务。你想如何使用未知结构和数据类型的数据?
如果您需要返回通用数据,请使用XElement或XmlElement作为操作的返回类型,并将结果转换为XML(手动,序列化,FOR XML select,...)。
使用强类型的东西,比如所谓的POCO(只是普通的对象,映射到数据库) – Andrey 2010-09-14 15:14:14