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