DataLoadOptions クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
関連データの即時読み込みとフィルター処理を提供します。
public ref class DataLoadOptions sealed
public sealed class DataLoadOptions
type DataLoadOptions = class
Public NotInheritable Class DataLoadOptions
- 継承
-
DataLoadOptions
例
Northwind サンプル データベースから Customers を取得する場合は、 DataLoadOptions を使用して、 Orders も取得するように指定できます。 取得する Orders のサブセットを指定することもできます。
注釈
DataLoadOptions クラスは、関連データの即時読み込みとフィルター処理を提供します。
オブジェクトに対してクエリを実行すると、実際には要求したオブジェクトのみが取得されます。 関連オブジェクトは同時に自動的にフェッチされません。 詳細については、「 リレーションシップ間のクエリ」を参照してください。
DataLoadOptions クラスには、指定された関連データの即時読み込みを実現する 2 つのメソッドが用意されています。 LoadWithメソッドを使用すると、メイン ターゲットに関連するデータをすぐに読み込みます。 AssociateWith メソッドを使用すると、関連するオブジェクトをフィルター処理できます。
準則
DataLoadOptionsの使用に関する次の規則を検討してください。
- 最初のクエリの実行後に DataLoadOptions を DataContext に割り当てると、例外が生成されます。
- DataContextに割り当てられた後にDataLoadOptionsを変更すると、例外が生成されます。
処理サイクル
LoadWith ディレクティブと AssociateWith ディレクティブはサイクルを作成できません。 このようなグラフの例を次に示します。
例 1: 自己再帰
dlo.LoadWith<Employee>(e => e.Reports);
例 2: バック ポインター
dlo.LoadWith <Customer>(c => C.Orders);dlo.LoadWith <Order>(o => o.Customer);
例 3: 長いサイクル
これは適切に正規化されたモデルでは発生しませんが、可能です。
dlo.LoadWith <A>(a => a.Bs);dlo.LoadWith <B>(b => b.Cs);dlo.LoadWith <C>(c => c.As);
例 4: 自己再帰サブクエリ
dlo.AssociateWith<A>(a=>a.As.Where(a=>a.Id=33));
例 5: より長い再帰サブクエリ
dlo.AssociateWith<A>(a=>a.Bs.Where(b=>b.Id==3));dlo.AssociateWith<B>(b=>b.As.Where(a=>a.Id==3));
次の一般的な規則は、これらのシナリオで発生する内容を理解するのに役立ちます。
LoadWith: LoadWith を呼び出すたびに、グラフにサイクルが導入されたかどうかを確認します。 例 1、2、3 のように、例外がスローされます。
AssociateWith: 実行時に、エンジンは式内のリレーションシップに既存の SubQuery 句を適用しません。
- 例 4 では、subQuery 式自体によってサブフィルター処理された句だけでなく、すべての
Aに対してWhere句が実行されます (これは再帰的であるため)。 - 例 5 では、
Bにサブクエリがある場合でも、最初のWhere句がすべてのBに適用されます。 2 番目のWhere句は、Aにサブクエリがある場合でも、すべてのAに適用されます。
- 例 4 では、subQuery 式自体によってサブフィルター処理された句だけでなく、すべての
コンストラクター
| 名前 | 説明 |
|---|---|
| DataLoadOptions() |
DataLoadOptions クラスの新しいインスタンスを初期化します。 |
メソッド
| 名前 | 説明 |
|---|---|
| AssociateWith(LambdaExpression) |
特定のリレーションシップに対して取得されたオブジェクトをフィルター処理します。 |
| AssociateWith<T>(Expression<Func<T,Object>>) |
特定のリレーションシップに対して取得されたオブジェクトをフィルター処理します。 |
| Equals(Object) |
指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判断します。 (継承元 Object) |
| GetHashCode() |
既定のハッシュ関数として機能します。 (継承元 Object) |
| GetType() |
現在のインスタンスの Type を取得します。 (継承元 Object) |
| LoadWith(LambdaExpression) |
ラムダ式を使用して、メイン ターゲットに関連する指定されたデータを取得します。 |
| LoadWith<T>(Expression<Func<T,Object>>) |
T 型のオブジェクトに対してクエリを送信するときに取得するサブオブジェクトを指定します。 |
| MemberwiseClone() |
現在の Objectの簡易コピーを作成します。 (継承元 Object) |
| ToString() |
現在のオブジェクトを表す文字列を返します。 (継承元 Object) |