nhibernate优化

时间:2011-01-21 15:00:46

标签: nhibernate

您好 我是nhibernate的新手,我想用一些信息填充树视图 - 一个客户的访问列表(代码中的“访问”) - 每次访问都包含一个账单清单(代码中的“事实”)

我写了那段代码:

ISession session = NHibernate.DataAccess.Models.Repository.TSession();

var visites = (from v in session.Query<Visites>()
 where v.Clients.Idclient == lstClients.SelectedValue.ToString()
 && v.Supprime == false
 select v).ToList();

foreach (Visites v in visites)
{
 node = new TreeNode("Visite du " + v.Datevis.ToShortDateString());

 var liste = v.Factures.Where(f => !f.Masque).Where(f => !f.Recup);
 foreach (Factures f in liste)
 {
  node.Nodes.Add("Facture n°" + f.Nofacture.ToString());
 }
}

请注意:

  1. 访问列表被过滤(一位客户的访问)
  2. 帐单清单已过滤(仅显示可见帐单)
  3. 它运行良好但速度很慢,每次访问都有一个SQL查询。 在我的旧代码上,我做了一个sql查询,检索客户左边的所有访问点加入可见账单,并且我可以填写树视图。

    该查询的最佳做法是什么?

    问候

1 个答案:

答案 0 :(得分:0)

batch-size="n"添加到Visites.Factures集合的映射中,其中 n 是您想要一次加载的集合数。

这意味着您只需查询每个 n Visites实例。