Как использовать конвертер в AutoQuery - PullRequest
2 голосов
/ 02 июня 2019

У меня есть реализация автозапроса, например:

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 выполняет автоматическое отображение, я чувствую, что должна быть возможность зарегистрировать конвертер для его использования.

1 Ответ

0 голосов
/ 02 июня 2019

AutoMapping Registrations как и вся конфигурация должна быть настроена только один раз при запуске , например, в AppHost.Configure().

Сам AutoQuery ничего не делаетПри отображении набор результатов ответа AutoQuery заполняется непосредственно из результатов БД, поэтому конвертеры не используются.

...