Прочитать на английском

Поделиться через


Метод Load

Существует несколько сценариев, в которых может потребоваться загрузить сущности из базы данных в контекст без немедленного выполнения каких-либо действий с этими сущностями. Хорошим примером этого является загрузка сущностей для привязки данных, как описано в разделе "Локальные данные". Один из распространенных способов сделать это — написать запрос LINQ, а затем вызвать ToList только для немедленного отключения карта созданного списка. Метод расширения Load работает так же, как ToList, за исключением того, что он полностью избегает создания списка.

Методы, представленные в этом разделе, также применимы к моделям, созданным с помощью Code First и конструктора EF.

Ниже приведены два примера использования Load. Первый берется из приложения привязки данных Windows Forms, где Load используется для запроса сущностей перед привязкой к локальной коллекции, как описано в разделе "Локальные данные".

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

    _context = new ProductContext();

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

Во втором примере показано использование 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();
}