LINQ to SQLは、個々のプロパティの遅延読み込みをサポートしています。DBMLデザイナでは、列のプロパティでにDelay Loaded
設定できます。true
遅延ロードされた列は、最初のに含まれませんSELECT
。オブジェクトのプロパティにアクセスしようとして、まだロードされていない場合は、別のSELECT
ステートメントが実行されて、DBからこの値が取得されます。
DBMLファイルを手動で編集する場合は、を設定し<Column IsDelayLoaded="true">
ます。LINQ to SQLクラスを手動で記述している場合は、プロパティのバッキングフィールドを。のLink<T>
代わりに宣言するのと同じくらい簡単ですT
。例えば:
[Table]
public class Person
{
private Link<string> _name;
[Column(Storage = "_name")]
public string Name
{
get { return _name.Value; }
set { _name.Value = value; }
}
}
ScottGuthrieによるこの投稿の「遅延/遅延読み込み」セクションも参照してください。
更新:上記の回答は、必要なときに列を引き続き使用できるようにする場合に適用されます。SELECT
特に要求するか(を参照LoadOptions
)、アクセスを試みない限り、sには含まれません。
列をまったく使用またはアクセスしたくない場合で、クラスプロパティとして使用したくない場合は、DBMLファイルから列を削除するというSerapthの回答を参照してください。その列の同時実行性チェックが失われるなどの影響を必ず理解してください。