Net Core - .Include()导致循环导致Visual Studio调试崩溃

asp.net-core-mvc dbcontext eager-loading entity-framework-core visual-studio-2017

我的数据库在“UsageRecord”和“Dimension”之间有一对多的关系

数据库图

这建模如下(使用Database-First方法):

public partial class Dimension
    {               
        ...          
        public virtual ICollection<UsageRecord> UsageRecord { get; set; }       
    }

用法记录类:

      public partial class UsageRecord
        {
            public long Id { get; set; }
            ...
            public long DimensionId { get; set; }    
            public virtual Dimension Dimension { get; set; }              
        }

所以,如果我查询UsageRecords(EagerLoading)列表:

_context.Set<UsageRecord>.Where(x => x.ProductId == productId).ToList()

我得到一个UsageRecord对象列表,我可以在调试期间浏览: 使用记录

请注意Dimension对象为null,这是正确的,因为我没有将它包含在查询中。

现在,如果我尝试包含它,应用程序崩溃:

_context.Set<UsageRecord>.Where(x => x.ProductId == productId).Include(p => p.Dimension).ToList();

紧急

邮差退出时出现502错误,VS Debug首先显示问号列表“?”在崩溃之前。

我认为这是因为通过包含Dimension对象,这会循环遍历UsageRecords列表,然后一次又一次地遍历Dimension。

我怎么能避免呢?

热门答案

为了从LINQ查询中检索结果,您可以通过以下方式解决问题:

  • 配置序列化程序以忽略循环
  • 为控制器的操作创建视图模型
  • 在控制器的操作中使用选择结果中的匿名类型


Related

许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow