.NET Core中包含的循环引用

时间:2019-09-06 08:11:08

标签: .net-core entity-framework-core

我正在.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的其他示例。

1 个答案:

答案 0 :(得分:0)

这实际上不是问题。 EF拥有所谓的“对象修复”。在内部,它使用对象缓存。当它为数据库查询结果构建实体实例时,会将其添加到对象缓存中,允许它稍后再拉出那些对象,而不是再次发出相同的查询。

由于此对象缓存,如果它已经存在与某个关系相对应的实体实例,它将从对象缓存中自动填充该关系。它不会永远发出一系列循环查询。