ASP Net Core API退还Json

问题描述

我正在学习Net Core,并且正在使用Entity Framework Core 2.1生成控制器。

我上了这些课:

public partial class Posts
    {
        public int Id { get; set; }
        //Some other atributes

        public virtual ICollection<PostsTags> PostsTags { get; set; }
    }

public partial class Tags
    {
        public int Id { get; set; }
        public string Nombre { get; set; }

        public List<PostsTags> PostsTags { get; set; }
    }

public partial class PostsTags
    {
        public int PostId { get; set; }
        public int TagId { get; set; }

        public virtual Tags Tags { get; set; }
        public virtual Posts Posts { get; set; }
    }

事实是,由于我要搜索的多对多关系,因此我需要此中间表。

当我运行项目时,然后获取“ Posts”方法即可:

[{"id":1,"fecha":"2020-09-13T20:07:00","titulo":"Error 1001 al instalar Agilis HTTP Server","ismPostId":3800,"votos":0,"publicadorId":1,"usuarios":{"nombre":"Robert","apellido":"Gotsik","codigo":"rg","password":"rg","id":1,"estado":0},"alcance":0,"texto":"Some explanation here","postsTags":[{"postId":1,"tagId":1,"tags":{"id":1,"nombre":"FICS","postsTags":[

JSON的结尾被切掉。

我已经在OnModelCreating中添加了流利的API:

modelBuilder.Entity<PostsTags>().HasKey(pt => new { pt.PostId,pt.TagId });

解决方法

我已经解决了这个问题。

在ConfigureServices中,我添加了以下内容:

services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1).AddJsonOptions(options =>
options.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore);

这将注释循环递归。