Metoda Load

Istnieje kilka scenariuszy, w których można załadować jednostki z bazy danych do kontekstu bez natychmiastowego wykonywania niczego z tymi jednostkami. Dobrym przykładem jest ładowanie jednostek dla powiązania danych zgodnie z opisem w artykule Dane lokalne. Jednym z typowych sposobów wykonania tego zadania jest napisanie zapytania LINQ, a następnie wywołanie metody ToList tylko w celu natychmiastowego odrzucenia utworzonej listy. Metoda rozszerzenia Load działa tak samo jak ToList, z tą różnicą, że całkowicie unika tworzenia listy.

Techniki przedstawione w tym temacie dotyczą modeli utworzonych przy użyciu podejścia „najpierw kod” i narzędzia EF Designer.

Poniżej przedstawiono dwa przykłady użycia funkcji Load. Pierwszy jest pobierany z aplikacji powiązania danych formularzy systemu Windows, w której polecenie Load służy do wykonywania zapytań o jednostki przed powiązaniem z kolekcją lokalną, zgodnie z opisem w temacie Dane lokalne:

protected override void OnLoad(EventArgs e)
{
    base.OnLoad(e);

    _context = new ProductContext();

    _context.Categories.Load();
    categoryBindingSource.DataSource = _context.Categories.Local.ToBindingList();
}

W drugim przykładzie pokazano, jak ładowanie przefiltrowanej kolekcji powiązanych jednostek, zgodnie z opisem w temacie Ładowanie powiązanych jednostek:

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();
}