ナビゲーションプロパティを使用して、必要に応じてデータをロードします。ナビゲーションプロパティ(Threshold.TypeおよびThreshold.Owner)が存在しない場合は、dbmlを開いて関連付けを追加します。
ナビゲーションプロパティを怠惰に使用すると、余分なクエリが発生します。
List<Threshold> result = dc.Thresholds.ToList(); //run first query
foreach(Threshold t in result)
{
Type type = t.Type; //run second query (per row)
Owner owner = t.Owner; //run third query (per row)
}
DataLoadOptionsを使用して、クエリ中に関連データを熱心にロードします。
DataLoadOptions options = new DataLoadOptions();
options.LoadWith<Threshold>(t => t.Type);
options.LoadWith<Threshold>(t => t.Owner);
dc.LoadOptions = options;
List<Threshold> result = dc.Thresholds.ToList(); // run query
foreach(Threshold t in result)
{
Type type = t.Type; //these values are already loaded by this point.
Owner owner = t.Owner;
}
クエリを記述して、必要な形状のデータをロードします
var query =
from t in dc.Thresholds
let type = t.Type
let owner = t.Owner
select new {Threshold = t, Type = type, Owner = owner};
var result = query.ToList(); //run query
foreach(var x in result)
{
Threshold t = x.Threshold;
Type type = x.Type; //might be null.
Owner owner = x.Owner; //might be null.
}