我遇到了EF查詢的一些性能問題。如何以最有效的方式獲得懶惰列表的數量?
我們基本上是這樣的:
public class Article
{
public int ID { get; set; }
public virtual List<Visit> Visits { get; set; }
}
public class Visit
{
public int? ArticleID { get; set; }
public DateTime Date { get; set; }
}
現在,我想這樣做:
Article a = ...;
vm.Count = a.Visits.Count;
的問題是,從我所知,這首先使整個列表被取出,然後計算它。在循環中執行此操作時會產生性能問題。
我認爲這是由於對象太「具體」,所以我試圖將Visits.Count
調用盡可能地移回存儲庫中(這樣我們就可以直接使用DbContext )。這沒有幫助。
有什麼建議嗎?
你可以在文章中添加一個'GetVisitsCount'? - 取決於你計劃使用它多少,如果它只有幾次然後它不會是一個性能問題無論如何,所以我認爲它相當多 – Sayse 2013-04-22 10:18:14