实体框架加入vs包含

时间:2015-02-26 18:10:40

标签: c# entity-framework join entity-framework-6

我正在使用EF6.1并且对编写连接查询的两种格式感到困惑。

var query = (from cc in dbContext.Companies.AsNoTracking()
             join dc in dbContext.Departments.AsNoTracking() 
             on cc.CompanyId equals dc.CompanyId
                select new {cc,dc}).ToList().Select(k=> New Company()
                              {
                                 CompanyId = k.cc.CompanyId,
                                 Departments = k.dc.ToList()
                              });

VS

var query = dbContext.Comapanies.Include(k=>k.Departments).ToList();

我的问题是哪一个应该使用,哪些是利弊。

我发现在多个表的情况下使用Include的混合反馈。

如下文所述 https://msdn.microsoft.com/en-in/data/jj574232.aspx

  

"请注意,目前无法过滤加载了哪些相关实体。包含将始终存在于所有相关实体中。"

这句话也不是很清楚。 请建议。

1 个答案:

答案 0 :(得分:2)

"请注意,目前无法过滤加载了哪些相关实体。包含将始终存在于所有相关实体中。"

**此声明表示,如果表格在数据库中定义了适当的关系,那么' Inclues'会工作,但join语句不需要在数据库中定义任何关系

它是使用包含或加入进行让步时的关键点,顺便说一下包含更合适,因为它已经在DB和实体中管理了