我有一个包含两个实体的简单模型:
添加新评论时,请说出来:
post.Comments.Add(newComment);
系统将在添加新注释之前请求SELECT加载所有现有注释。但是,如果有数百条评论,那么它是正确的。是否可以避免负载?谢谢你的任何建议。
答案 0 :(得分:2)
这是ORM的典型问题。这里没有银弹。
如果您提前加载所有注释,则会导致浪费大量带宽,因为可能不需要所有注释。
另一方面,如果您没有提前加载评论,并且有人做了类似的事情:
for(var i = 0; i < 100; i++){
doSomethingWith(post.Comments[i]);
}
您正在从数据库中导致一百次提取 - 有效地导致Select n+1 issue。
所以,这是一个自以为是的设计选择,一些ORM只会获取帖子,其他ORM会包含.Include
这样的特殊语法,表明你对评论也感兴趣,有些人会完全忽略这些并浪费请求。
答案 1 :(得分:1)
您关注插入新评论的效果,因此以下选项可能有所帮助: