c# - Entity Framework 加入与包含

标签 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()
                              });

对比

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/

相关文章:

c# - LINQ .ToList() 在单个结果上失败

c# - 具有多个键的 EF Find()

c# - Entity Framework 是否使用反射并损害性能?

c# - Nuget PM 无法识别 Entity Framework Core 命令

c# - P/Invoke CryptUnprotectData 中断 SqlConnection 构造函数

c# - 如何将文本框条目放入 while 循环? C#

c# - 如何获取导致异常的方法的名称

MySQL 之间通过使用替换

mysql联合还是加入?

MySQL:两个表共享公共(public) "date"列,如何在 JOIN 后将日期一起排序?