2015-04-16 31 views
2

我有一個包含兩個實體一個簡單的模型:如何在ORM中有效地映射集合?

  • 後的實體 - 一個總根,可以有評論列表 - >評論
  • 評論實體

當添加新評論,可以說這是這樣的:

post.Comments.Add(newComment); 

系統將請求一個SELECT加載所有現有的評論,然後再添加一個新的評論。但是,如果有數百條評論,那麼它很重。是否有可能避免負載?感謝您的任何建議。

回答

2

這是ORM的一個經典問題。這裏沒有銀彈。

如果您提前加載所有評論,會導致大量帶寬浪費,因爲可能不需要所有評論。

在另一方面,如果你不事先和別人加載評論確實是這樣的:

for(var i = 0; i < 100; i++){ 
    doSomethingWith(post.Comments[i]); 
} 

你造成一百從數據庫中提取 - 有效地引起Select n+1 issue

因此,這是一種自以爲是的設計選擇,有些ORM只會取得帖子,其他的將包括特殊的語法,如.Include,這表明您對評論也很感興趣,有些會完全忽略它並浪費請求。