2017-08-24 46 views
0

我有一個奇怪的問題,使用ASP.NET Core從我的數據庫獲得服務器響應。使用後沒有服務器響應ASP.NET Core包括

所以CASE 1點返回200 OK和一個不錯的列表

public IActionResult GetTrades(int id) 
{ 
    var positions = context.Trades.Where(x=>x.WebClientId==id).ToList(); 
    return Ok(positions); 
} 

但是這裏面的交易表我有一個由其ID引用其他對象,我想達到這些目標,以及讓我用include() 。

public IActionResult GetTrades(int id) 
{ 
    var positions = context.Trades.Where(x=>x.WebClientId==id) 
        .Include(s=>s.Strategy) 
        .Include(p=>p.Portfolio).ToList(); 

    return Ok(positions); 
} 

現在,這裏是奇怪的事情開始發生的地方。郵遞員我沒有回覆。沒有錯誤,沒有什麼,只是無法得到任何迴應。

但是,如果我進入調試模式並在返回時放置一個斷點,那麼我需要的所有東西都在那裏,所有對象都在那裏,我可以進入它們中的每一個,Strategy,Portfolio,並查看所有模型細節。

希望別人也有類似的問題。謝謝。

回答

1

域模型中存在一個循環。我不得不使用AutoMapper和分離資源模型來展開循環,並開始工作。

例如:

在沒有向組合模型類的引用這樣的交易模型類:

public Portfolio Portfolio { get; set; } //virtual for lazy loading 
public int PortfolioId { get; set; } 

在Porfolios類有以這樣的交易類的引用:

public IList<Trade> Trades { get; set; } 

我重新創建兩個類如PortfolioResource和TradeResource無環和編輯控制器使用AutoMapper這樣的:

public async Task<IEnumerable<TradeResource>> GetPositions(int id) 
{ 

    var positions = await context.Trades 
     .Where(x => x.WebClientId == id) 
     .Include(s => s.Strategy) 
     .Include(p => p.Portfolio) 
     .ToListAsync(); 

    return mapper.Map<List<Trade>, List<TradeResource>>(positions); 
} 

我也使用

1)的dotnet附加包AutoMapper 2)的dotnet附加包AutoMapper.Extensions.Microsoft.DependancyInjection 創建此映射輪廓ASP.NET核心AutoMapper的正確安裝後3)dotnet恢復

還增加了services.AddAutoMapper();到ConfigureServices中的StartUp.cs

最後是映射器類。

public class MappingProfie:Profile 
{ 
    public MappingProfie() 
    { 
     CreateMap<Trade, TradeResource>(); 
     CreateMap<Portfolio, PortfolioResource>(); 
     CreateMap<WebClient, WebClientResource>(); 
     CreateMap<Strategy, StrategyResource>(); 
    } 
} 

一切都在此之後開始工作。