Как следует, я использую авто картограф для преобразования задачКэширования в Automapper резольвере для повышения производительности
Mapper.CreateMap<Task, GanttTask>().ForMember(dst => dst.parentIdRaw, opt => opt.ResolveUsing<TaskParentIdResolver>())
так в TaskParentIdResolver,
public class TaskParentIdResolver : ValueResolver<Task, int?>
{
protected IUow Uow { get; set; }
public TaskParentIdResolver()
{
RepositoryFactories factory = new RepositoryFactories();
IRepositoryProvider provider = new RepositoryProvider(factory);
this.Uow = new Uow(provider);
}
protected override int? ResolveCore(Task source)
{
if (source.ParentId != null && source.ParentId != Guid.Empty)
{
var task = Uow.Tasks.GetById(source.ParentId.Value);
return task.Id;
}
else return null;
}
}
Проблемы я столкнулся есть
var tasksList = Mapper.Map<IEnumerable<Task>, IEnumerable<GanttTask>>(Uow.Tasks.GetAll().Where(con => con.IsProjectSummary == true)).ToList();
Если у меня есть задача 200, тогда резольвер называется 200 раз и каждый раз, когда Uow требует времени, чтобы вернуться к решению parentId. Есть ли способ кэшировать этот список задач в resolver, чтобы только первый UOw вызывал задачу, а все остальные - возвращал список задач кеша.