如何在ef核心上获得依赖实体?

时间:2017-02-25 01:04:04

标签: asp.net asp.net-core entity-framework-core

这是我的模型架构。

这是依赖实体

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();
    }

1 个答案:

答案 0 :(得分:2)

您的模型也很好(*)和Get()方法。您的问题是在JSON序列化过程中检测到无限循环,因为Article指向ArticleFeeArticleFee指向Article

要解决您的问题,您必须在Startup.cs中配置应用,以便&#34;忽略&#34;而不是&#34;抛出异常&#34;当检测到这样的循环时。来自this的.NET Core解决方案SO回答:

services.AddMvc().AddJsonOptions(options => {
     options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
}); ;

您需要将using Newtonsoft.Json;添加到文件中。

(*)假设你的Type实体没问题。