我正在使用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()
});
与
var query = dbContext.Comapanies.Include(k=>k.Departments).ToList();
我的问题是应该使用哪种,优缺点是什么。
我发现在有多个表的情况下使用Include的混合反馈。
根据下面的文章
https://msdn.microsoft.com/en-in/data/jj574232.aspx
“请注意,当前无法过滤加载了哪些相关实体。包含将始终存在于所有相关实体中。”
这句话也不太清楚。
请提出建议。
最佳答案
“请注意,当前无法过滤加载了哪些相关实体。包含将始终存在于所有相关实体中。”
**此语句意味着,如果表在数据库中定义了正确的关系,则可以使用“ Inclues”,但join语句不需要在数据库中定义任何关系
它成为让使用inclue或join时的关键点,btw includes更合适,因为它已经在DB和实体中进行了管理