関連付け
Association オブジェクトは、システム内の関連するエンティティをリンクします。たとえば、顧客が注文を行う状況であれば、顧客は AdventureWorks システム内の salesorder と関連付けられます。関連付けは親および子のエンティティへのポインタと、クライアントが親エンティティから子エンティティを取得できるようにするビジネス ロジック (MethodInstance オブジェクト) へのポインタを保持します。関連付けのトラバーサルは、基幹業務 (LOB) システムに対するメソッドの呼び出しです。
SourceEntity オブジェクトと DestinationEntity オブジェクトは、別個のメタデータ オブジェクトではありません。これらは Entity メタデータ オブジェクトのインスタンスです。SourceEntity オブジェクトと DestinationEntity オブジェクトはどちらも同じ LobSystem オブジェクト内に存在する必要があります。
関連付けのロジック (MethodInstance) は、関連付けの参照元または参照先のどちらか、あるいは関連がないエンティティに対して設定できます。ただし、XML ファイルは上から下へ処理されるため、参照元と参照先のエンティティを定義する順序は非常に重要です。このため、関連付けメソッドで参照されるエンティティは、関連付けメソッドを含むエンティティの前に定義されるようにしてください。これらのエンティティが正しい順序になっていない場合、ビジネス データ カタログにアプリケーション定義を追加しようとすると、エラーが表示されます。これは、関連付けメソッドに、まだ作成されていないエンティティへの参照が含まれることになるためです。
ビジネス データ カタログでは、複数の SourceEntity と、1 つの DestinationEntity オブジェクトのシナリオがサポートされます。サンプルについては、「SampleWebService」を参照してください。
Association の MethodInstance オブジェクトには、参照元エンティティ インスタンスの ID 値の入力に複数のスロット、参照先エンティティ インスタンスの ID 値の出力にスロットが 1 つあります。このため、Association メソッドでは、関連付けの参照元である各エンティティのそれぞれの ID に対応する ID でタグ付けされた、十分な数の入力用の TypeDescriptor オブジェクトをタグ付けする必要があります。入力の TypeDescriptor オブジェクトの IdentifierName 属性は、メソッドを実行する前に関連するエンティティ インスタンスの ID 値を挿入するようビジネス データ カタログに通知します。たとえば、ある AssociationMethodInstance で、取得しようとしている参照元エンティティ インスタンスの ID 値を、ユーザーが指定済みである可能性があります。ビジネス データ カタログは、すべての既定値を使用してこのパラメータを完全にインスタンス化した後、その値をこのスロットに挿入します。
ビジネス データ カタログでは、外部キー擬似関連付けもサポートされます。外部キー擬似関連付けは、優先的に使う関連付けではありません。Customer を返し、Customer のフィールドの 1 つが、Customer の Address へのキーである Web メソッドがあるとします。メタデータ作成者は、このメソッドを Customer-Association メソッドとして再利用できます。外部キー擬似関連付けでは、このメソッドのターゲットが Address であると見なされ、返された Customer の Address のキーがフェッチされます。次に Address に対して Address.FindSpecific() が呼び出され、Address が自動的に返されます。
注意
ビジネス データ カタログでは、関連付けによるエンティティの循環チェーンはサポートされません。つまり、"エンティティ A はエンティティ B に関連し、エンティティ B はエンティティ C に関連し、エンティティ C はエンティティ A に関連する" という関連付けをサポートしません。
例
<Associations>
<Association AssociationMethodEntityName=" Customer"
AssociationMethodName=" GetSalesOrdersForCustomer"
AssociationMethodReturnParameterName="SalesOrders"
Name=" CustomerToSalesOrder" IsCached="true">
<SourceEntity Name="Customer" />
<DestinationEntity Name="SalesOrder" />
</Association>
</Associations>
スキーマ
子 |
型 |
出現回数 |
既定値 |
制限/使用する値 |
説明 |
---|---|---|---|---|---|
AssociationMethodEntityName |
属性 (String) |
1..1 |
関連付けをトラバースするメソッドを含むエンティティの名前。 |
||
AssociationMethodName |
属性 (String) |
1..1 |
関連付けをトラバースするメソッドの名前。 |
||
AssociationMethodReturnParameterName |
属性 (String) |
1..1 |
参照先エンティティ インスタンスが含まれる戻り値パラメータの名前。 |
||
SourceEntity |
要素 |
1..多数 |
関連付けの参照元エンティティを表します。関連付けには複数の参照元エンティティが存在することがあります。たとえば、SAP で、Sales Orders のリストを取得するには、Customer と Sales Area が必要です。 |
||
DestinationEntity |
要素 |
1..1 |
SourceEntity
子
子 |
型 |
出現回数 |
既定値 |
制限/使用する値 |
説明 |
---|---|---|---|---|---|
Name |
属性 (String) |
1..1 |
関連付けの参照元エンティティの名前。 |
DestinationEntity
子
子 |
型 |
出現回数 |
既定値 |
制限/使用する値 |
説明 |
---|---|---|---|---|---|
Name |
属性 (String) |
1..1 |
関連付けの参照先エンティティの名前。 |
See Also
タスク
AdventureWorks SQL Server 2000 のサンプル