我正在使用實體框架6來檢索具有多個導航屬性的實體,以嵌套深實體。我正面臨着巨大的性能影響,這已經被實體框架的請求所記錄下來。我在最深的實體(Geocoordinate)中擁有數百條記錄,檢索Session實體需要8秒(我不到1秒)。使用實體框架檢索許多嵌套實體的性能下降
這裏是日誌的要點樣本: https://gist.github.com/bbougot/837419c682a75d4741a5
這裏是我的代碼:
using (var context = new ModelContainer())
{
context.Database.Log = msg => Trace.WriteLine(msg);
var session= await
context.SessionSet.FirstOrDefaultAsync(a => a.Identifier == sessionIdentifier);
var result = await Json(session).ExecuteAsync(new CancellationToken());
return ResponseMessage(result);
}
我取回我的模型的紅色實體(注意之間的唯一一個一對多的關係路線和Geoposition):
(鏈接到大尺寸圖像:http://i.imgur.com/adRw6br.jpg?1)
我試過禁用懶加載和使用包括加載我的實體,但它更糟糕,我已經達到了SQL Server超時。
你確定這是EF的問題嗎?我的意思是如果你運行類似的TSQL查詢,它運行速度更快嗎? – Rahul
不,它是差不多的...我認爲我的模型沒有真正優化。我會簡化一些關係,然後表現應該更好。 – Ben