Load メソッド
データベースからコンテキストにエンティティを読み込む必要はあるものの、それらのエンティティに対してすぐに何かを行うわけではない、という場合があります。 そのよい例が、「ローカル データ」で取り上げた、データ バインディングを目的としたエンティティの読み込みです。 LINQ クエリを作成してその ToList を呼び出し、作成されたリストをすぐに破棄する、というのがその一般的な方法になります。 Load 拡張メソッドは、ちょうど ToList と同じように動作しますが、リストの作成が一切伴わない点が異なります。
このトピックで紹介するテクニックは、Code First および EF Designer で作成されたモデルに等しく使用できます。
以下に示したのは、Load の 2 つの使用例です。 1 つ目は、Windows フォームのデータ バインディング アプリケーションからの抜粋で、Load を使用してエンティティを照会した後、ローカル コレクションにバインドしています (「ローカル データ」を参照)。
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
_context = new ProductContext();
_context.Categories.Load();
categoryBindingSource.DataSource = _context.Categories.Local.ToBindingList();
}
2 つ目は、関連エンティティのフィルター処理済みコレクションを Load を使用して読み込む例です (「関連エンティティの読み込み」を参照)。
using (var context = new BloggingContext())
{
var blog = context.Blogs.Find(1);
// Load the posts with the 'entity-framework' tag related to a given blog
context.Entry(blog)
.Collection(b => b.Posts)
.Query()
.Where(p => p.Tags.Contains("entity-framework"))
.Load();
}
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET