2017-03-01 76 views
4

我遇到了一些我猜測與使用.NET Core Web API和Entity Framework Core進行自引用相關的問題。當我添加時,我的Web API開始窒息。包括一些導航屬性。如何停止.Net Core Web API中的自引用循環?

我發現什麼似乎是舊的Web API的解決方案,但我不知道如何爲.NET Core Web API實現相同的功能(我仍處於早期學習階段)。

老溶液在Application_Start()在Global.asax的堅持這一點:

GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Serialize; 

我懷疑這是在啓動的ConfigureService處理()方法,但我不知道遠遠超出那裏。

還是有更合適的方法來處理這個問題?

+1

一般來說,我使用不具備環形迴路(不直EF對象) – BradleyDotNET

+0

@BradleyDotNET我同意,你的地圖DB API對象連接以API調用者爲中心的對象。數據庫通過線路是軟件開發的反模式(具有諷刺意味的是,它是很多人「做REST」的轉向解決方案) –

+0

這似乎違反了DRY原則,因爲我的電線模型看起來與我的模型完全相同由EF。 –

回答

14

好的......我終於在這裏找到了一些參考資料。解決的辦法是:

public void ConfigureServices(IServiceCollection services) 
{ 
    ... 

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

    ... 
} 

我得到這個從here