Не завершен ответ с Включить из WebApi Core - PullRequest
0 голосов
/ 18 мая 2019

У меня есть две модели классов.

Projects * * 1004

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; }
}

У меня есть простой ProjectController с GetProjects метод:

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

Но из этого GET я получаю нечто, похожее на это:

enter image description here

Как видите, tasks обрезаны.

Но когда я удаляю Include:

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

Все отлично работает:

enter image description here

Но, конечно, мы не получаем задачи.

У меня вопрос, как заставить это включенное Tasks проецироваться с .Net Core 2.1 WebApi? Что там происходит?

PS. я пробовал ToList() и IActionResult с ObjectResponse, все работает одинаково (вырезанные задачи и проекты). Postman не могу получить от него ничего, поэтому я использую хром, чтобы показать вам случай

1 Ответ

0 голосов
/ 18 мая 2019

Проблема решена. Вам необходимо добавить:

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

в вашем Startup.cs и все отлично работает

...