繁体   English   中英

EF6触发“包含”新查询吗?

[英]EF6 triggers new query on “Include”?

我正在使用EF6,我注意到当我在查询中“包括”一个子表时,EF为每个父行触发一个新查询...可以吗? 有没有一种方法可以避免这种情况,并使所有信息仅包含在主查询中?

这是我的实体(不是确切的代码):

public class Contractor
{
   public int id { get; set;}
   public IEnumerable<ContractorEmployee> Employees;
}

public class ContractorEmployee
{
   public int id { get; set;}
   public int contractorId { get; set;}
}

这是查询:

var fullContractors = dbContext.Contractors.Include("ContractorEmployee");

因此,如果fullContractors查询检索到5个承包商,则我在SQL中看到5个额外的查询,这些查询使每个承包商都雇用了承包商。

任何避免这种情况的方式都可以放在第一个“ SELECT”中?

Include方法将参数名称作为字符串,建议使用以Expression为参数的Include的重载版本。 您可以在此处查看扩展方法的重载版本。

也可以

var fullContractors = dbContext.Contractors.Include("Employees");

或使用像这样的Expression版本:

var fullContractors = dbContext.Contractors.Include(d => d.Employees);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM