2011-01-21 3 views
2

Здравствуйте Я новичок в NHibernate, я хотел бы, чтобы заполнить TreeView с некоторой информацией - список посещения («посещено» в коде) для одного клиента - при каждом посещении содержит список законопроект ("" в фактурах коды)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. списка законопроекта фильтруется (только видимая счет)

Он работает хорошо, но это очень медленный процесс, для каждого визита есть SQL-запрос. В моем старом кодексе я сделал запрос sql, который возвращает все визиты на клиенте слева, присоединяется к видимому счету и с хорошим заказом я могу заполнить древовидную структуру.

Какова наилучшая практика для этого запроса?

С уважением

ответ

0

Добавить batch-size="n" к вашему картографированию для сбора Visites.Factures, где п является подсчетом коллекций, которые вы хотите загрузить сразу.

Это значит, что у вас будет только запрос для каждого n Visites instance.

+0

Я лучше посмотрел на ваше решение (и протестировал его). Это более результативно, спасибо –

Смежные вопросы