Принцип архитектурного шаблона CQS заключается в том, что вы отделяете свои запросы и команды от разных путей. В идеале, ваш хранилище сохраняемости может быть секционированно прочитано/записано, но в моем случае есть одна нормализованная база данных.
Если вы используете ORM (NHibernate в моем случае), то ясно, что ORM используется при выдаче команд. Но как насчет всех различных запросов, которые нужно выполнить для формирования данных (DTO) для пользовательских экранов, является ли обычной практикой прерывать ORM при выполнении Query-стороны CQS?
Где я должен выполнять свои запросы и проекции DTO? Прямой ADO.NET(datareaders, dtos, datatables, хранимые процедуры)? Некоторые запросы совершенно уникальны и связаны с множеством попыток собрать все вместе. Я не хочу денормализовать базу данных для запросов, но я мог бы создавать представления (денормализация плохого человека).