我正在使用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
"请注意,目前无法过滤加载了哪些相关实体。包含将始终存在于所有相关实体中。"
这句话也不是很清楚。 请建议。
答案 0 :(得分:2)
"请注意,目前无法过滤加载了哪些相关实体。包含将始终存在于所有相关实体中。"
**此声明表示,如果表格在数据库中定义了适当的关系,那么' Inclues'会工作,但join语句不需要在数据库中定义任何关系
它是使用包含或加入进行让步时的关键点,顺便说一下包含更合适,因为它已经在DB和实体中管理了