【发布时间】:2010-11-25 11:28:18
【问题描述】:
我有以下代码(显然)给我带来了巨大的性能问题,我寻求关于如何使它变得更好的建议。这个想法是,对于列表中的每个基本项目,我查看是否至少有一个派生项目,如果没有,我创建一个。问题是,对于每个基础项目,都有一个单独的数据库查询:
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;
}
你会如何改进这种代码?
【问题讨论】: