DataLoadOptions クラス


関連データの即時読み込みおよびフィルター処理を提供します。Provides for immediate loading and filtering of related data.

public ref class DataLoadOptions sealed
public sealed class DataLoadOptions
type DataLoadOptions = class
Public NotInheritable Class DataLoadOptions

Northwind サンプルデータベースCustomersからを取得する場合、を使用DataLoadOptionsしても取得Ordersされることを指定できます。When you retrieve Customers from the Northwind sample database, you can use DataLoadOptions to specify that Orders is also to be retrieved. 取得するのOrdersサブセットを指定することもできます。You can even specify which subset of Orders to retrieve.



オブジェクトに対してクエリを実行すると、要求したオブジェクトだけが実際に取得されます。When you query for an object, you actually retrieve only the object you requested. 関連オブジェクトは同時に自動的にフェッチされません。The related objects are not automatically fetched at the same time. (詳細については、「リレーションシップ間のクエリ」を参照してください)。(For more information, see Querying Across Relationships.)

クラスDataLoadOptionsには、指定された関連データをすぐに読み込むための2つのメソッドが用意されています。The DataLoadOptions class provides two methods to achieve immediate loading of specified related data. メソッドLoadWithを使用すると、メインターゲットに関連するデータを即時に読み込むことができます。The LoadWith method allows for immediate loading of data related to the main target. メソッドAssociateWithを使用すると、関連するオブジェクトをフィルター処理できます。The AssociateWith method allows for filtering related objects.


使用状況に関するDataLoadOptions次の規則に注意してください。Note the following rules regarding DataLoadOptions usage:

サイクルの処理Cycle Handling

LoadWithディレクティブAssociateWithとディレクティブは、循環を作成できません。LoadWith and AssociateWith directives must not create cycles. このようなグラフの例を次に示します。The following represent examples of such graphs:

  • 例 1: 自己再帰的Example 1: Self recursive

    • dlo.LoadWith<Employee>(e => e.Reports);
  • 例 2:バックポインターExample 2: Back-pointers

    • dlo.LoadWith <Customer>(c => C.Orders);

    • dlo.LoadWith <Order>(o => o.Customer);

  • 例 3: 長いサイクルExample 3: Longer cycles

    これは、適切に正規化されたモデルでは発生しませんが、可能です。Although this should not occur in a well-normalized model, it is possible.

    • dlo.LoadWith <A>(a => a.Bs);

    • dlo.LoadWith <B>(b => b.Cs);

    • dlo.LoadWith <C>(c => c.As);

  • 例 4:自己再帰的サブクエリExample 4: Self recursive subQueries

    • dlo.AssociateWith<A>(a=>a.As.Where(a=>a.Id=33));
  • 例 5:長い再帰サブクエリExample 5: Longer recursive subqueries

    • dlo.AssociateWith<A>(a=>a.Bs.Where(b=>b.Id==3));

    • dlo.AssociateWith<B>(b=>b.As.Where(a=>a.Id==3));

これらのシナリオで何が起こるかを理解するのに役立つ一般的な規則を次に示します。The following are some general rules that help you understand what occurs in these scenarios.

LoadWithへの各LoadWith呼び出しは、グラフに循環が導入されているかどうかを確認します。LoadWith Each call to LoadWith checks whether cycles have been introduced into the graph. (例1、2、3など) がある場合は、例外がスローされます。If there are, as in Examples 1, 2, and 3, an exception is thrown.

AssociateWith実行時のエンジンは、既存のサブクエリ句を式内のリレーションシップに適用しません。AssociateWith The engine at run time does not apply the existing SubQuery clauses to the relationship inside the expression.

  • 例 4 Whereでは、サブクエリ式自体にAよってサブフィルター処理されたものだけでなく、すべてに対して句が実行されます (再帰的になるため)。In Example 4, the Where clause is executed against all A, not just the ones sub-filtered by the SubQuery expression itself (because that would be recursive)

  • 例5では、にWhere Bサブクエリがある場合でBも、1つ目の句がすべてのに適用されます。In Example 5, the first Where clause is applied to all the Bs, even though there are subqueries on B. A Where サブクエリがある場合でも、2番目の句がすべてのに適用されます。AThe second Where clause is applied to all the As even though there are subqueries on A.



DataLoadOptions クラスの新しいインスタンスを初期化します。Initializes a new instance of the DataLoadOptions class.



特定のリレーションシップについて取得するオブジェクトをフィルター処理します。Filters the objects retrieved for a particular relationship.


特定のリレーションシップについて取得するオブジェクトをフィルター処理します。Filters objects retrieved for a particular relationship.


指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判定します。Determines whether the specified object is equal to the current object.

(継承元 Object)
GetAssociationCriteria(MemberInfo, LambdaExpression)

既定のハッシュ関数として機能します。Serves as the default hash function.

(継承元 Object)

現在のインスタンスの Type を取得します。Gets the Type of the current instance.

(継承元 Object)

ラムダ式を使用して、メイン ターゲットに関連する指定したデータを取得します。Retrieves specified data related to the main target by using a lambda expression.


T 型のオブジェクトにクエリが送信されるときに取得するサブオブジェクトを指定します。Specifies which sub-objects to retrieve when a query is submitted for an object of type T.


現在の Object の簡易コピーを作成します。Creates a shallow copy of the current Object.

(継承元 Object)

現在のオブジェクトを表す string を返します。Returns a string that represents the current object.

(継承元 Object)