【问题标题】:Incomplete JSON data on GET request in ASP.NET CoreASP.NET Core 中 GET 请求的 JSON 数据不完整
【发布时间】:2019-05-30 01:43:14
【问题描述】:

为什么我不是通过链接从数据库中获取所有数据 https://localhost:XXXXX/api/comments (获取请求) 更新后页面数据不再出现..

回应: [{"id":1,"text":"Comment1","userId":1,"parentCommentId":null,"user":null,"parentComment":null,"childrenComments":null},{"id ":2,"text":"Comment2","userId":1,"parentCommentId":1,"user":null,"parentComment":{"id":1,"text":"Comment1"," userId":1,"parentCommentId":null,"user":null,"parentComment":null,"childrenComments":[

不加载从属项.. 我做错了什么?

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

【问题讨论】:

    标签: json entity-framework linq rest asp.net-core


    【解决方案1】:

    您还必须加载关系。执行此操作的两种主要方法是通过Include 进行急切加载或延迟加载。但是,通常应该避免延迟加载,尤其是在这种情况下。当您序列化一个对象时,您最终可能会因延迟加载而无意中发出数百甚至数千个查询。

    长短,为你关心的关系添加Include子句:

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

    如果您想要更大的灵活性,您可以使用 OData 或 GraphQL。两者都允许客户有选择地包含他们想要/需要的关系,这意味着您不必每次都加入所有内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-22
      • 1970-01-01
      • 2019-11-21
      • 2021-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-11
      相关资源
      最近更新 更多