C# 通过代码映射优化Nhibernate查询
我有一个nhibernate 3.2查询,它返回前500个干预项(在原始查询中有一个过滤器) 此查询已优化,但效果不好,因为Take方法将占用500行,如果存在ReponsePointVerification值,则我将不会有500个干预项 因此,如果我想让它发挥作用,我有两种方法:C# 通过代码映射优化Nhibernate查询,c#,nhibernate,C#,Nhibernate,我有一个nhibernate 3.2查询,它返回前500个干预项(在原始查询中有一个过滤器) 此查询已优化,但效果不好,因为Take方法将占用500行,如果存在ReponsePointVerification值,则我将不会有500个干预项 因此,如果我想让它发挥作用,我有两种方法: 删除Take(500)并只执行前500次干预(数据库增长时会很重) 删除提取,但如果我将有500+1查询 nhibernate是否有处理该案件的方法 问候 编辑 谢谢你,迭戈,成功了 我忘了提到我在NH3.2中使
- 删除Take(500)并只执行前500次干预(数据库增长时会很重)
- 删除提取,但如果我将有500+1查询
Bag(x => x.ReponsePointVerification, map =>
{
map.Key( k => k.Column( "IdIntervention" ) );
map.BatchSize(50);
}, rm => rm.OneToMany());
请参阅在受影响集合的映射上使用
批量大小
,而不是获取
在90%的情况下,这是一个更好的解决方案
(我本来打算链接到相关的文档部分,但目前网站已关闭)
// a (very) simplified example
foreach (var intervention in listeInterventions)
{
foreach (var reponse in intervention.ReponsePointVerification)
{
}
listeInterventionsws.Add(interventionws);
}
Bag(x => x.ReponsePointVerification, map =>
{
map.Key( k => k.Column( "IdIntervention" ) );
map.BatchSize(50);
}, rm => rm.OneToMany());