J'ai le code suivant qui (évidemment) me donne d'énormes problèmes de performance, et je cherche un conseil pour l'améliorer. L'idée est, pour chaque élément de base dans une liste, je regarde s'il y a au moins un élément dérivé, et sinon, j'en crée un. Le problème est, pour chaque élément de base, il y a une requête de base de données séparée:Optimisation d'une requête NHibernate
var derivedItems = from item in baseItems select item.GetDerivedItem(session);
où
public virtual DerivedListItem GetDerivedItem(ISession session)
{
var items = session.Query<DerivedItem>()
.Where(item => item.BaseItem == this);
if (items.Any())
return items.First();
var newItem = new DerivedItem(this);
session.Save(newItem);
return newItem;
}
Comment améliorer ce genre de code?
Fantastique, je vais essayer – ulu
Lorsque j'utilise DetachedCriteria.For (GetType (MyQueriedType)), j'obtiens tous les éléments du type particulier. Mais comment faire la même chose si j'ai une entité racine et une propriété de collection à partir de laquelle filtrer? – ulu