我在上下文(內存)中有實體,因爲我用Include()加載它們。LINQ to Entities this slow?
我有大約25個實體(TPH)和我跑在他們每個人的以下查詢:
actTph.TrainingProgramHistory_ConditionAndLoadParameter.Where(x => x.Level == 10).Select(x => x.ConditionAndLoadParameter).ToArray();
TrainingProgramHistory_ConditionAndLoadParameter,並TrainingProgramHistory_ConditionAndLoadParameter.ConditionAndLoadParameters在內存中,因爲當執行這些查詢, SQL配置文件什麼都不記錄。
每個TPH都有大約20個TrainingProgramHistory_ConditionAndLoadParameter相關實體。
運行此查詢25次(在我的25個TPH實體上)大約需要3秒!
如果我重構此:
List<ConditionAndLoadParameter> measuredCalps = new List<ConditionAndLoadParameter>();
foreach (TrainingProgramHistory_ConditionAndLoadParameter tphCalp in actTph.TrainingProgramHistory_ConditionAndLoadParameter)
{
if (tphCalp.Level == 10)
{
measuredCalps.Add(tphCalp.ConditionAndLoadParameter);
}
}
然後,它運行在100毫秒左右。
對於內存中的對象,Linq如何緩慢實體?我究竟做錯了什麼?
我看到你在這些查詢查詢不同的對象 - ' tph'在第一種情況下,和'actTph'在第二種 –
他們是一樣的,我編輯了我原來的帖子。 – Csabi