2017-02-25 49 views
-1

這是我的模型架構。如何獲得ef核心上的依賴實體?

這是因實體

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

而你的問題是? –

+0

如何獲取相關或相關實體並在我的路線上顯示它們? – vnc

+0

反思(元數據)? –

回答

1

您的模型好(*)和Get()方法也是如此。您的問題是在JSON序列化期間檢測到無限循環,因爲Article指向ArticleFeeArticleFee指向Article

解決你的問題,你必須在Startup.cs配置應用程序以便其檢測到這樣的循環時,「忽略」,而不是「拋出異常」。從this在.NET核心解決方案,這樣回答:

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

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

(*)假設你的類型的實體是好的。

+0

這可能會成爲一個問題,但如果是這樣,它會拋出一個異常,而不是默默地序列化一個空數組。另外,當引用循環被忽略時,該數組應該是序列化的,而不是其元素內的後向引用。 –