У меня есть следующий фрагмент кода, который (очевидно) дает мне ОГРОМНЫЕ проблемы с производительностью, и я прошу совета о том, как сделать его лучше. Идея заключается в том, что для каждого базового элемента в списке я смотрю, есть ли хотя бы один производный элемент, а если нет, я создаю его. Проблема заключается в том, для каждого базового элемента есть отдельный запрос к базе данных:Оптимизация запроса NHibernate
var derivedItems = from item in baseItems select item.GetDerivedItem(session);
где
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;
}
Как бы вы улучшить этот вид кода?
Фантастический, я дам ему попробовать – ulu 2010-11-25 16:42:49