以下のような複数の階層データを含むエンティティを返す XML データソースとして Web サービスを使用しています (コードはプロジェクトのプライバシーのために変更されています)。
public class UserData {
// some scalar properties
public string Id ...
public string Name ...
public string Surname ...
// some navigational properties
public Address address ...
public CourseInfo[] courses ...
public AwardInfo[] awards ...
}
すべてのエンティティ情報を同じレポート内に表示するには、レポート内にさまざまなデータセットを作成して Web サービスを呼び出し、返されたサービス レスポンスの優先部分をフィルター処理します。
UserData プロパティのみを取得するには:
<Query>
<Method Name="GetUserData" Namespace="UserApp.ReportingServices"/>
<SoapAction>UserApp.ReportingServices/IReportingService/GetUserData</SoapAction>
<ElementPath IgnoreNamespaces="true">GetUserDataResponse{}/UserData</ElementPath>
</Query>
UserData プロパティとともに Address 情報を取得するには、次のようにします。
<Query>
<Method Name="GetUserData" Namespace="UserApp.ReportingServices"/>
<SoapAction>UserApp.ReportingServices/IReportingService/GetUserData</SoapAction>
<ElementPath IgnoreNamespaces="true">GetUserDataResponse{}/UserData/Address</ElementPath>
</Query>
UserData プロパティと一緒にコース情報を取得するには:
<Query>
<Method Name="GetUserData" Namespace="UserApp.ReportingServices"/>
<SoapAction>UserApp.ReportingServices/IReportingService/GetUserData</SoapAction>
<ElementPath IgnoreNamespaces="true">GetUserDataResponse{}/UserData/Courses/CourseInfo</ElementPath>
</Query>
ここで私の疑問が生じます: 上記のように複数のデータセット クエリを使用すると、レポートはすべてのデータセットに対して Web サービス呼び出しを行いますが、サービスは常に上記の 3 つのデータセットに必要なすべてのデータを含む同じ XML 応答を返します。
返されたクエリの XML 応答を他のデータセットに再利用する方法はありますか? 可能であれば、私のレポートは Web サービスを 1 回だけ呼び出し、データセットは Web サービスを何度も呼び出すことなく、その XML 応答のさまざまな部分をフィルタリングします。
これが不可能な場合、同じレポート内に複数の階層データを表示するベスト プラクティスは何ですか? データのさまざまな階層部分を返すさまざまな Web サービスを作成する必要がありますか?