我想知道其他人是否曾经历过这个?
我首先要说的是我没有在这个项目中使用ModelsBuilder。我遇到太多问题所以放弃了那条路。
然而,我在我的应用程序中将IPublishedContent项目转换为Dtos,使用基本上映射值的转换器类。我发现的问题是它导致代码执行速度大幅下降,尤其是在获取原始IPublishedContent集合时的比较。
举个例子,我有一份工作'文件类型。可以将工作分配给工人。在我的一项服务中,我需要获得分配给工人的所有工作的集合:
public IEnumerable<IPublishedContent> GetJobsForWorker(int workerId)
{
var jobs = Umbraco.TypedContent(1234);
return jobs.Descendants("job").Where(j => j.GetPropertyValue<int>("assignedWorker") == workerId).ToList();
}
此函数返回一个IPublishContent集合,它可以快速返回闪电,正如我所期望的那样。
然而,如果我尝试将结果转换为我的作业Dto类,它会从0秒到7左右......而那只是从约20个左右的记录返回~7的集合:< / p>
public IEnumerable<Job> GetJobsCompletedByWorker(int workerId)
{
var jobs = Umbraco.TypedContent(1234);
return jobs.Descendants("job").Where(j => j.GetPropertyValue<int>("assignedWorker") == workerId).Select(node => _jobConverter.ConvertToModel(_umbracoHelper, node)).ToList();
}
现在我没有在这个转换器中进行任何复杂的处理,它只是映射这些值:
public class JobConverter
{
public Job ConvertToModel(UmbracoHelper umbracoHelper, IPublishedContent node)
{
if (node != null)
{
var job = new Job
{
Id = node.Id,
Property1 = node.GetPropertyValue<string>("property1"),
Property2 = node.GetPropertyValue<string>("property2")
... more properties
};
return job;
}
return null;
}
}
我不确定这里的最佳做法是什么?是否有一些我错过的导致这种放缓的事情?我只是问,因为我之前使用的是模型制作器,基本上也是这样做的。将umbraco字段映射到属性,然而在那里没有相同的延迟。
最终我可以使用IPublishedContent,但它会使代码变得混乱,而且理解起来要困难得多。
我只是想知道是否有人曾经处理过这种情况以及他们是如何处理的?
由于
答案 0 :(得分:0)
事实证明我实际上有一个帮助方法在我的一个属性上运行,该属性正在查询成员数据,这使得数据库调用...因此减速!