Используя NHibernate, я должен иметь возможность настроить свое приложение для точной сортировки определенного набора объектов.
Настраиваемый вид:
- может включать несколько свойств
- можно указать отсортированные свойства в любом порядке
- можно указать asc / desc для отсортированных свойств
- может сортировать по пользовательским свойствам (т. Е. Нет соответствующего свойства SQL / C # - оно вычисляется)
Эта функциональность унаследована от существующего приложения, в котором части SQL задаются администратором, а оператор SQL создается / выполняется динамически.
Каждый раз, когда я пытаюсь обдумать решение, я начинаю погружаться в мутную воду со всевозможными сигналами тревоги в отношении удобства обслуживания, производительности, масштабируемости, безопасности и т. Д.
Например, я считаю, что администратор может указать строку с разделителями-запятыми, например, так:
"Date asc, FirstName asc, LastName desc"
Я могу разбить строку и пройти цикл, соответствующий парам свойство / сортировка в операторе case, и при необходимости вызвать .AddOrder (Order.Asc ("FirstName")). Но как мне обрабатывать пользовательские свойства? Я мог бы позволить пользователю указать SQL для вычисления пользовательских свойств, а затем разрешить пользователю сортировать по тем же параметрам, что и FirstName, но, похоже, я снова вернулся к dirty / kludge.
Есть ли чистый / подходящий способ справиться с этим требованием?