[英]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.