展平和组合WCF服务结果集以在SSRS报告中显示

时间:2013-03-13 15:21:05

标签: wcf reporting-services

我们有一个返回以下内容的WCF服务:

MessageContract
    |
    +-- List<TopLevelDataContract>

TopLevelDataContract
    |
    +-- FirstChildDataContract
    +-- SecondChildDataContract
    +-- ThirdChildDataContract

FirstChildDataContract
    |
    +-- FieldOne
    +-- AnotherField

SecondChildDataContract
    |
    +-- FieldTwo
    +-- YetAnotherField

ThirdChildDataContract
    |
    +-- FieldThree
    +-- AndAnotherField

为了在SSRS中充分展示这些数据交换,我们需要将它们展平为表格形式,如下所示:

+----------+--------------+----------+-----------------+------------+-----------------+
| FieldOne | AnotherField | FieldTwo | YetAnotherField | FieldThree | AndAnotherField |
+----------+--------------+----------+-----------------+------------+-----------------+
 ... rows of data...

然而,实现此目的的ElementPath表达式/ XMLDP查询正在躲过我们。我们没有高兴地尝试了以下内容:

  1. 获取FirstChildDataContract类型的所有“行”:
  2. <ElementPath IgnoreNamespaces="true">   
      MessageContract{}/TopLevelDataContracts{}/TopLevelDataContract{}/FirstChildDataContract
    </ElementPath>
    
    1. 这会获得所有孩子,但是采用原始XML格式:
    2. <ElementPath IgnoreNamespaces="true">   
        MessageContract{}/TopLevelDataContracts{}/TopLevelDataContract{@}
      </ElementPath>
      
      1. 这与(1):
      2. 相同
        <ElementPath IgnoreNamespaces="true">   
          *
        </ElementPath>
        

        如果可能,用于实现此目的的正确ElementPath表达式是什么?

        (除此之外:为什么微软不只是使用XPath,这是有充分文档和灵活的,而不是滚动他们自己的几乎但不是非常喜欢的xpath查询语言?)

1 个答案:

答案 0 :(得分:0)

我已经读过这个

http://msdn.microsoft.com/en-us/library/aa964129(SQL.90).aspx

它说明了

  

不支持多个父子层次结构。在此示例中,Customer同时具有订单和退货。提供者可能只返回一组。由于首先指定了Orders层次结构,因此自动派生会将其解析为骨架。

我对SSRS了解不多,但我正在考虑使用多个数据集作为技巧。有可能吗?