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.

LoadWithLoadWith を呼び出すたびに、グラフに循環が導入されたかどうかがチェックされます。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では、Bにサブクエリがある場合でも、最初の Where 句がすべての Bに適用されます。In Example 5, the first Where clause is applied to all the Bs, even though there are subqueries on B. 2番目の Where 句は、Aにサブクエリがある場合でも、すべての Aに適用されます。The 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)

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

(継承元 Object)