У меня есть реализация автозапроса, например:
public QueryResponse<BlogDto> Get(BlogsLookUpRequest request)
{
AutoMapping.RegisterConverter((Blog from) => {
var to = from.ConvertTo<BlogDto>(skipConverters: true); // avoid infinite recursion
to.Category = string.Join(",", from.BlogToBlogCategories.Select(x => x.BlogCategoryId.ToString()).Distinct());
return to;
});
var q = _AutoQuery.CreateQuery(request, base.Request);
var results = _AutoQuery.Execute(request, q);
return results;
}
Мой тип автозапроса QueryDb<Blog, BlogDto>
.
Преобразователь не вызывается.Я хочу сгладить мой объект таблицы соединений в CSV.Можно ли определить какое-либо пользовательское поведение отображения для этого в отображении автозапроса?
Если нет, каков наилучший способ изменить результат?
Редактировать:
Я получил его, объявив другой тип public class BlogEntityQuery : QueryDb<Blog>
, который не имеетмаршрут.Затем сделал это:
public QueryResponse<BlogDto> Get(BlogsLookUpRequest request)
{
AutoMapping.RegisterConverter((Blog from) => {
var to = from.ConvertTo<BlogDto>(skipConverters: true); // avoid infinite recursion
to.Category = string.Join(",", from.BlogToBlogCategories.Select(x => x.BlogCategoryId.ToString()).Distinct());
return to;
});
var q = _AutoQuery.CreateQuery(request, base.Request);
var rawResults = _AutoQuery.Execute(new BlogEntityQuery().PopulateWith(request), q);
var results = new QueryResponse<BlogDto>().PopulateWith(rawResults);
return results;
}
Работает, но чувствует себя немного хакером.Поскольку AutoQuery выполняет автоматическое отображение, я чувствую, что должна быть возможность зарегистрировать конвертер для его использования.