Performance 如何在ORM中高效地映射集合?

Performance 如何在ORM中高效地映射集合?,performance,orm,Performance,Orm,我有一个包含两个实体的简单模型: Post实体-聚合根目录,可以有注释->注释列表 注释实体 添加新评论时,我们可以这样说: post.Comments.Add(newComment); 在添加新注释之前,系统将请求选择加载所有现有注释。但是如果有成百上千的评论,那么它是沉重的权利。有可能避免负载吗?谢谢你的建议。这是ORMs的一个经典问题。这里没有银弹 如果您提前加载所有注释,您将导致大量带宽浪费,因为可能不需要所有注释 另一方面,如果您没有提前加载评论,而有人会这样做: for(var

我有一个包含两个实体的简单模型:

  • Post实体-聚合根目录,可以有注释->注释列表
  • 注释实体
添加新评论时,我们可以这样说:

post.Comments.Add(newComment);

在添加新注释之前,系统将请求选择加载所有现有注释。但是如果有成百上千的评论,那么它是沉重的权利。有可能避免负载吗?谢谢你的建议。

这是ORMs的一个经典问题。这里没有银弹

如果您提前加载所有注释,您将导致大量带宽浪费,因为可能不需要所有注释

另一方面,如果您没有提前加载评论,而有人会这样做:

for(var i = 0; i < 100; i++){
     doSomethingWith(post.Comments[i]); 
}
for(变量i=0;i<100;i++){
doSomethingWith(post.Comments[i]);
}
您从数据库中获取了100次数据,这实际上导致了错误


因此,这是一个固执己见的设计选择,一些ORM将只获取帖子,其他ORM将包含特殊语法,如
。include
,这表明您也对注释感兴趣,一些ORM将完全忽略这一点,并浪费请求

您担心插入新注释的性能,因此以下选项可能会有所帮助:

  • 重用nhibernate的db连接,编写自己的insert命令
  • 在Dapper的支持下,编写插入查询