加载方法The Load Method

在某些情况下,你可能需要将实体从数据库加载到上下文中,而不会立即对这些实体执行任何操作。 这是一个很好的例子,就是加载用于数据绑定的实体,如本地数据中所述。 实现此目的的一个常见方法是编写 LINQ 查询,然后对其调用 System.linq.enumerable.tolist,只是立即放弃创建的列表。 负载扩展方法的工作方式与 System.linq.enumerable.tolist 相同,只是它可以避免完全创建列表。

本主题所介绍的方法同样适用于查询使用 Code First 和 EF 设计器创建的模型。

下面是两个使用 Load 的示例。 第一种方式是从 Windows 窗体数据绑定应用程序中获取,在将其绑定到本地集合之前,将使用 Load 查询实体,如本地数据中所述:

  1. protected override void OnLoad(EventArgs e)
  2. {
  3. base.OnLoad(e);
  4. _context = new ProductContext();
  5. _context.Categories.Load();
  6. categoryBindingSource.DataSource = _context.Categories.Local.ToBindingList();
  7. }

第二个示例演示如何使用 Load 加载相关实体的筛选集合,如加载相关实体中所述:

  1. using (var context = new BloggingContext())
  2. {
  3. var blog = context.Blogs.Find(1);
  4. // Load the posts with the 'entity-framework' tag related to a given blog
  5. context.Entry(blog)
  6. .Collection(b => b.Posts)
  7. .Query()
  8. .Where(p => p.Tags.Contains("entity-framework"))
  9. .Load();
  10. }