这是我的模型架构。
这是依赖实体
public class ArticleFee
{
public int ID { get; set; }
public string Description { get; set; }
public Type Type { get; set; }
public double? FixedFee { get; set; }
public int? RangeStart { get; set; }
public int? RangeEnd { get; set; }
public double? Percentage { get; set; }
[StringLengthAttribute(1, MinimumLength = 1)]
public string ArticleLetter { get; set; }
public Article Article { get; set; }
}
public class Article
{
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[KeyAttribute]
[StringLengthAttribute(1, MinimumLength = 1)]
public string Letter { get; set; }
public string Title { get; set; }
public string Description { get; set; }
public ICollection<ArticleFee> ArticleFees { get; set; }
}
以下是我在路线上显示数据的方法,但ArticleFees只显示一个空数组。
[HttpGetAttribute]
public IEnumerable<Article> Get()
{
return _context.Articles
.Include(a => a.ArticleFees)
.ToList();
}
答案 0 :(得分:2)
您的模型也很好(*)和Get()
方法。您的问题是在JSON序列化过程中检测到无限循环,因为Article
指向ArticleFee
而ArticleFee
指向Article
。
要解决您的问题,您必须在Startup.cs
中配置应用,以便&#34;忽略&#34;而不是&#34;抛出异常&#34;当检测到这样的循环时。来自this的.NET Core解决方案SO回答:
services.AddMvc().AddJsonOptions(options => {
options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
}); ;
您需要将using Newtonsoft.Json;
添加到文件中。
(*)假设你的Type实体没问题。