Entity framework JSON序列化程序返回n^2预期条目数
我有一个API,它产生了一些有趣的结果。调试时,在序列化之前,一切都按预期进行 ScheduleEvent实体具有项目实体的外键。我正在尝试返回与给定id匹配的所有ScheduleEvents 当我运行下面的时,它返回正确的结果,但是如果它应该返回10个条目,它将返回10^2(正确的结果重复10次) 最初,下面的命令导致自引用循环检测到错误。我添加了以下解决错误的方法Entity framework JSON序列化程序返回n^2预期条目数,entity-framework,serialization,asp.net-web-api,json.net,entity-framework-core,Entity Framework,Serialization,Asp.net Web Api,Json.net,Entity Framework Core,我有一个API,它产生了一些有趣的结果。调试时,在序列化之前,一切都按预期进行 ScheduleEvent实体具有项目实体的外键。我正在尝试返回与给定id匹配的所有ScheduleEvents 当我运行下面的时,它返回正确的结果,但是如果它应该返回10个条目,它将返回10^2(正确的结果重复10次) 最初,下面的命令导致自引用循环检测到错误。我添加了以下解决错误的方法 services.AddMvc().AddJsonOptions(options => { //options.S
services.AddMvc().AddJsonOptions(options =>
{
//options.SerializerSettings.NullValueHandling =
// Newtonsoft.Json.NullValueHandling.Include;
options.SerializerSettings.ReferenceLoopHandling =
Newtonsoft.Json.ReferenceLoopHandling.Ignore;
});
如果我运行以下命令,它将按预期输出
return Ok(await _context.Project.Include(p => p.ScheduleEvents)
.Where(x => x.ProjectName == id).ToListAsync());
模型的代码:
项目
public class Project
{
[Key]
public int ProjectId { get; set; }
public string ProjectName { get; set; }
...
public ICollection<ScheduleEvent> ScheduleEvents { get; set; } = null;
}
public class ScheduleEvent
{
[Key]
[JsonProperty("ScheduleEventId")]
public int ScheduleEventId { get; set; }
...
[Display(Name = "Project")]
[JsonProperty("Project")]
[ForeignKey("ProjectForeignKey")]
public virtual Project Project { get; set; } = null;
}
您可能需要设置
ProxyCreationEnabled=false
。请参阅,您能否显示模式类的“代码”?您可能需要设置ProxyCreationEnabled=false
。查看并显示模式类的“代码”吗?
public class ScheduleEvent
{
[Key]
[JsonProperty("ScheduleEventId")]
public int ScheduleEventId { get; set; }
...
[Display(Name = "Project")]
[JsonProperty("Project")]
[ForeignKey("ProjectForeignKey")]
public virtual Project Project { get; set; } = null;
}