Неполные данные JSON по GET-запросу в ASP.NET Core - PullRequest
0 голосов
/ 29 мая 2019

Почему я получаю не все данные из базы по ссылке https://localhost:XXXXX/api/comments (ПОЛУЧИТЬ запрос) После обновления данные страницы больше не отображаются ..

Быстродействие: [{ "ID": 1, "Текст": "Comment1", "идентификатор пользователя": 1, "parentCommentId": NULL, "пользователь": NULL, "parentComment": NULL, "childrenComments": NULL}, { "идентификатор ": 2," текст ":" Comment2" , "идентификатор пользователя": 1, "parentCommentId": 1, "пользователь": нулевой, "parentComment": { "ID": 1, "текст": "Comment1",» идентификатор пользователя ": 1," parentCommentId ": нулевой," пользователь ": нулевой," parentComment ": нулевой," childrenComments ": [

Не загружает подчиненный элемент. Что я делаю не так?

// GET: api/Comments
[HttpGet]
public IEnumerable<Comment> GetComments()
{
    return _context.Comments;
}

1 Ответ

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

Вы должны также загрузить отношения. Два основных способа сделать это - полная загрузка через Include или отложенная загрузка. Однако в целом следует избегать ленивых загрузок, и особенно в таких случаях. Когда вы сериализуете объект, вы можете в конечном итоге выдать сотни или даже тысячи запросов непреднамеренно с отложенной загрузкой.

Длинно и коротко, добавьте Include предложения для отношений, которые вас интересуют:

return _context.Comments
    .Include(x => x.User)
    .Include(x => x.parentComment)
    .Include(x => x.childrenComments);

Если вам нужна большая гибкость, вы можете использовать OData или GraphQL. Любой из них позволит клиенту выборочно включать в себя отношения, которые ему нужны / нужны, а это означает, что вам не обязательно каждый раз присоединяться ко всем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...