繁体   English   中英

尚未完成对来自WebApi Core的Include的回复

[英]Not completed response with Include from WebApi Core

我有两个模型类。

Projects

public class Project
{
    public Project()
    {
    }

    [Key]
    public int Id { get; set; }

    public string Tag { get; set; }

    public string Name { get; set; }

    public string Description { get; set; }

    public virtual List<Task> Tasks { get; set; }
}

Tasks

public class Task
{
    public Task()
    {
    }

    [Key]
    public int Id { get; set; }

    [ForeignKey("Project")]
    public int ProjectId { get; set; }

    public Project Project { get; set; }

    public string Name { get; set; }

    public string Description { get; set; }

    public Priority Priority { get; set; }

    public int? StoryPoints { get; set; }

    public DateTime? StartTime { get; set; }

    public DateTime? EndTime { get; set; }
}

我有简单的ProjectControllerGetProjects方法:

    [HttpGet]
    public IEnumerable<Project> GetProjects()
    {
        return context.Projects.Include(t => t.Tasks);
    }

但是从这个GET ,我得到的东西看起来像这样:

在此输入图像描述

如您所见, tasks被切断。

但当我删除Include

    [HttpGet]
    public IEnumerable<Project> GetProjects()
    {
        return context.Projects;
    }

一切正常:

在此输入图像描述

但当然,我们没有完成任务。

我的问题是,如何使用.Net Core 2.1 WebApi包含Tasks 那是怎么回事?

PS。 我尝试使用ObjectResponse ToList()IActionResult ,所有工作都相同(切割的任务和项目)。 Postman不能从中得到任何东西,这就是为什么我用铬来向你展示这个案例

问题解决了。 你需要添加:

services.AddMvc().AddJsonOptions(options => 
    { options.SerializerSettings.ReferenceLoopHandling = 
                                Newtonsoft.Json.ReferenceLoopHandling.Ignore; });

在你的Startup.cs ,一切正常

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM