データプロバイダーが返す出力に複数のインスタンスがあるかどうかを指定します。
構造化データタイプ (SDT) を定義して、SDT をデータプロバイダーのソースにドラッグする場合について考えてみます。この操作を行うと、データプロバイダーの [ Output ] プロパティには SDT の名前が自動的に設定されます。つまり、データプロバイダーはロードした構造体 (SDT に基づくデータタイプ) を返すので、同じタイプの変数で出力を受け取る (ユーザーはデータプロバイダーを呼び出した場所で受け取る) 必要があります。
SDT がコレクションではないけれども、そのデータタイプのコレクションをデータプロバイダーでロードして結果を返したい場合は、データプロバイダーの [ Collection ] プロパティを True に設定します。次に、データプロバイダーのソースで複数のインスタンスをロードします。最後に、データプロバイダーを呼び出した場所で、データプロバイダーが返す結果を受け取る (受け取る変数は SDT に基づく変数のコレクションとして設定する) 必要があります。
つまり、このプロパティを使用すると、SDT の元の定義を変更することなく、特定のデータプロバイダーで SDT 定義の複数のインスタンスをロードして返すように設定することができます。
ビジネスコンポーネントのトランザクションの場合も同様です。この種のオブジェクトをデータプロバイダーのソースにドラッグすると、データプロバイダーの [ Output ] プロパティにはビジネスコンポーネントの名前が自動的に設定されます。しかし、そのデータタイプのコレクションをロードして結果を返したい場合は、データプロバイダーの [ Collection ] プロパティ を True に設定する必要があります。
代わりのソリューションがある SDT (SDT の場合は、SDT をコレクションとして定義してデータプロバイダーのソースにドラッグすることで出力がコレクションになる) とは異なり、データプロバイダーを使用してビジネスコンポーネントのタイプの複数のインスタンスをロードして結果を返すには、このプロパティを True に設定する方法しかありません。
前述のとおり、データプロバイダーのソースではビジネスコンポーネントのタイプの複数インスタンスをロードする必要があります。その後、データプロバイダーを呼び出した場所で、データプロバイダーが返す結果を受け取る (受け取る変数はビジネスコンポーネントに基づく変数のコレクションとして設定する) 必要があります。最後に考慮すべき重要な点は、データプロバイダーを呼び出すオブジェクトでデータプロバイダーから返された結果を処理し、Insert メソッドまたは InsertOrUpdate メソッドを実行してデータベースに挿入する必要があるということです。
このプロパティは設計時にのみ適用されます。
1) SDT のコレクションをロードして返すデータプロバイダーオブジェクトのサンプル
次ようなトランザクションについて考えます:
Customer
{
CustomerId*
CustomerName
}
Data Provider オブジェクトを使用して customesr データのコレクションをロードする 2 つの方法を示します。
1.1) 次の構造化データタイプ (コレクションではない) を定義するとします。
次に、データプロバイダー (DPCustomersList) を作成し、そのソースに SDT をドラッグします。
登録されている customers データをすべてロードする場合は、データプロバイダーのソースとプロパティを次のように変更します:
操作の目的を明示するためにベーストランザクション (Customer) が記述されていることに注意してください。また、今回のような場合、SDT のプロパティ名が項目属性と同名なので、明示的に割り当てを記述する必要はありません。
データプロバイダーが複数のインスタンスを返すように設定するには、上記のように [ Collection ] プロパティを True にします。この結果、[ Collection Name ] プロパティが自動的に追加され、返されるコレクションの名前がデフォルトで入力されます (ユーザーはこの値を更新できます)。
1.2) 次に、コレクションの構造化データタイプを下記のように定義するとします。
その後、データプロバイダー (DPCustomersList2) を作成して、SDT をそのソースにドラッグします。
データプロバイダーの [ Output ] プロパティには、SDT の名前が自動的に設定されます。つまり、データプロバイダーはロードした構造体 (SDT に基づくデータタイプ) を返します。ユーザーはコレクションをロードして返すことになるので、 [ Collection ] プロパティの値を変更する必要はありません。
ソースを書くだけで準備完了です。
2) ビジネスコンポーネントのコレクションをロードして返す Data Provider オブジェクトのサンプル
「ビジネスコンポーネントの Insert メソッド」に記載されているサンプル 4 を参照してください。
オブジェクト: Data Provider 対応しているプラットフォーム: Web (.NET、Java)、スマートデバイス (Android、iOS)
|