Таблица возврата API Entity Framework Core с помощью .Include - PullRequest
0 голосов
/ 31 августа 2018

У меня есть модель с ICollection:

public class Blog
{
    public int Id { get; set; }

    [Required]
    public string Name { get; set; }

    public ICollection<Posts> Posts { get; set; }
}

Это работает с MVC:

public async Task<IActionResult> Index()
{
    return View(await _context.Blog.Include(l => l.Posts).ToListAsync());
}

Я пытаюсь использовать API-контроллер :

[Route("api/[controller]")]
[ApiController]
....
[HttpGet]
public IEnumerable<Blog> GetAll()
{
    return _context.Blog.Include(l => l.Posts).ToList();
}

Это приводит к ошибке:

SyntaxError: JSON.parse: конец данных после значения свойства в объекте в строке 1 столбца 44 данных JSON

Как вернуть многомерный Json с Blogs и для каждой записи в блоге все сообщения?

Ответы [ 2 ]

0 голосов
/ 01 сентября 2018

Решение:

Это ошибка в сериализации JSON.

Добавить в Startup.cs для Mvc ConfigureServices:

services.AddMvc()
            .AddJsonOptions(options => options.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore);
0 голосов
/ 31 августа 2018

Попробуйте это

[Route("api/[controller]")]
[ApiController]
 ....
[HttpGet]
public IActionResult GetAll()
{
   return Ok(_context.Blog.Include(l => l.Posts).ToList());
}

Если вы попытаетесь выполнить асинхронную оболочку IActionResult в Задаче

...