我正在.NET core中使用以下代码
.Include(p => p.Company).ThenInclude(p => p.Country).ToList();
我的课程如下所示,
public partial class Company
{
public Guid Id { get; set; }
public string Name { get; set; }
public virtual Country Country { get; set; }
}
public partial class Country
{
public Country()
{
Companies = new HashSet<Company>();
}
public Guid Id { get; set; }
public string Name { get; set; }
public string ShortCode { get; set; }
public virtual ICollection<Company> Companies { get; set; }
}
我只希望公司,然后是公司所在国家/地区。但是我将公司带到了国家(地区)内部,然后将国家(地区)带入了这些公司,依此类推,这导致响应延迟。
我已经尝试过在Google / StackOverFlow上使用Include的其他示例。
答案 0 :(得分:0)
这实际上不是问题。 EF拥有所谓的“对象修复”。在内部,它使用对象缓存。当它为数据库查询结果构建实体实例时,会将其添加到对象缓存中,允许它稍后再拉出那些对象,而不是再次发出相同的查询。
由于此对象缓存,如果它已经存在与某个关系相对应的实体实例,它将从对象缓存中自动填充该关系。它不会永远发出一系列循环查询。