2011-11-01 29 views
0

這是一個非常常見的問題,但我無法在google上找到很好的答案。使用EF4.1查詢樹結構時的最佳性能

我有一個標準的樹結構,

  • 編號
  • 的ParentId
  • 名稱
  • ForeignKeyId

我第一次嘗試在查詢

return db.Tree 
     .Where(t => t.ForeignKeyId == xxx && t.Parent == null).SingleOrDefault(); 

這將導致N * 2選擇數據庫。對於很小的樹木來說,速度非常緩慢,對於大樹來說時間很長

有沒有什麼好的方法來加快樹遍歷與EF4.1?

編輯:這一個工作的好一點

var eager = db.Tree.Include(t => t.Children).Where(t => t.ForeignKeyIdd == xxx).ToList(); 

    return eager 
     .Where(t.Parent == null).SingleOrDefault(); 

回答

0

試試這個:

return db.Tree 
     .Where(t => t.ForeignKeyId == xxx && t.ParentId == null) 
     .SingleOrDefault();