我使用的是 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();
我的问题是应该使用哪一个以及有什么优缺点。
我发现在多个表的情况下使用包含的混合反馈。
根据下面的文章 https://msdn.microsoft.com/en-in/data/jj574232.aspx
"Note that it is not currently possible to filter which related entities are loaded. Include will always being in all related entities."
这个说法也不是很清楚。 请提出建议。
最佳答案
“请注意,目前无法过滤加载了哪些相关实体。包含将始终存在于所有相关实体中。”
**这条语句意味着,如果表在数据库中定义了正确的关系,那么“Inclues”将起作用,但连接语句不需要在数据库中定义任何关系
这是决定使用 inclue 或 join 的关键点,顺便说一句,includes 更合适,因为它已经在数据库和实体中进行管理
关于c# - Entity Framework 加入与包含,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28749722/