Include方法的作用是什么

时间:2012-11-23 09:14:07

标签: c# linq-to-entities

我正在尝试为项目学习LINQ。但我对Include方法感到有些困惑。它是干什么用的?相册变量的以下两个初始化之间有什么区别?

var album = storeDB.Albums.Include("Artist").ToList();
var album = storeDB.Albums.ToList();

2 个答案:

答案 0 :(得分:7)

Include是一种扩展方法,由EF用于启用您实体的Eager Loading

在第一种情况下,通过指定Include("Artist"),当您从Album集中检索Albums个实体时,您指示LINQ也检索相关的Artist实体(通常关联是通过数据库中的外键,尽管您也可以在模型中关联)。

在第二种情况下,在获取相册时,您不会浏览任何相关实体。

请注意,从Entity Framework 4.1及其后开始,有一种使用Include的首选机制,它采用lambda,因此字符串关联变为强类型,即:

var album = storeDB.Albums.Include(alb => alb.Artist).ToList();

请记住在使用lambda扩展名时导入System.Data.Entity

答案 1 :(得分:0)

这两个语句用于不同的目的,第一个是使用Eager加载,即一次加载属于您实体的所有对象(而不是稍后再进行另一个查询),

第二个给你结果,所以你可以把它保存在一个可容许的迭代器而不是IQueryable对象,这是Linq的更常见的类型