Я пытаюсь реализовать шаблон cqrs с помощью mediatr, и все настроено правильно и работает хорошо. Однако у меня есть проблема при попытке реализовать компоненты devextreme в моих представлениях. Для компонентов требуется конечная точка, которая принимает объект DataSourceLoadOptions, который затем может быть связан с классом DataSourceLoader и объектом IQueryable для автоматизации фильтрации / разбиения по страницам / сортировки и т. Д. c. Этот код - fantasti c, и он действительно избавляет от множества типичных вещей.
Вот пример «старого способа», который я использовал, чтобы делать вещи:
[HttpGet]
public virtual object Get(DataSourceLoadOptions loadOptions)
{
var queryable = this.context.Set<TEntity>();
return DataSourceLoader.Load(queryable, loadOptions);
}
Как Вы можете видеть, что это действительно неплохо, однако это старая школа, а не многослойная, и она связывает меня с EF как механизмом постоянства. Но теперь заменить его шаблоном CQRS будет немного сложно, потому что я не хочу, чтобы мое приложение, домен или даже уровень базы данных знали о devextreme (это технология представления и она должна оставаться там). Я также не очень заинтересован в возвращении простого IQueryable из ответа mediatr, поскольку это означает, что такие вещи, как поддержание контекста / проблемы с тестируемостью / некоторые запросы Linq не могут быть реализованы в int SQL et c ... пахнет плохо.
Мне интересно, есть ли другой способ как-то извлечь интерфейс, а затем, возможно, создать сервис, который я могу внедрить через DI, чтобы решить эту проблему? Я не могу найти какие-либо ресурсы на net относительно этого. Как обычно, все примеры - это просто примеры использования "hello world", и ни один из них действительно не запачкает свои руки проблемами "реального мира", такими как фильтрация / пейджинг / идентификация и т. Д. c
Если у кого-то есть какие-либо идеи Пожалуйста, укажите мне в правильном направлении