Asp.net core mvc Net核心-.Include()导致循环导致Visual Studio调试崩溃
我的数据库在“UsageRecord”和“Dimension”之间有一对多关系 这建模如下(使用数据库优先的方法): 因此,如果我查询UsageRecords列表(正在加载):Asp.net core mvc Net核心-.Include()导致循环导致Visual Studio调试崩溃,asp.net-core-mvc,entity-framework-core,dbcontext,visual-studio-2017,eager-loading,Asp.net Core Mvc,Entity Framework Core,Dbcontext,Visual Studio 2017,Eager Loading,我的数据库在“UsageRecord”和“Dimension”之间有一对多关系 这建模如下(使用数据库优先的方法): 因此,如果我查询UsageRecords列表(正在加载): \u context.Set.Where(x=>x.ProductId==ProductId.ToList()) 我获得了调试期间可以浏览的UsageRecord对象列表: 请注意,维度对象为null,这是正确的,因为我没有将其包括在查询中 现在,如果我尝试将其包括在内,应用程序将崩溃: _context.Set&
\u context.Set.Where(x=>x.ProductId==ProductId.ToList())
我获得了调试期间可以浏览的UsageRecord对象列表:
请注意,维度对象为null,这是正确的,因为我没有将其包括在查询中
现在,如果我尝试将其包括在内,应用程序将崩溃:
_context.Set<UsageRecord>.Where(x => x.ProductId == productId).Include(p => p.Dimension).ToList();
\u context.Set.Where(x=>x.ProductId==ProductId).Include(p=>p.Dimension.ToList();
Postman退出时出现502错误,VS Debug在崩溃之前首先显示问号“?”列表
我认为这是由于这样一个事实,即通过包含维度对象,它会一次又一次地遍历所附的UsageRecords列表,然后遍历维度
如何避免此问题?为了从LINQ查询中检索结果,您可以通过以下方式解决问题:
- 将序列化程序配置为忽略循环
- 为控制器的操作创建视图模型
- 在控制器的操作中使用“选择结果”中的匿名类型
public partial class UsageRecord
{
public long Id { get; set; }
...
public long DimensionId { get; set; }
public virtual Dimension Dimension { get; set; }
}
_context.Set<UsageRecord>.Where(x => x.ProductId == productId).ToList()
_context.Set<UsageRecord>.Where(x => x.ProductId == productId).Include(p => p.Dimension).ToList();