Я пытаюсь использовать QueryOver.OrderBy со строками для имен свойств для дочерних объектов. например следующие работы, но я жестко кодирую поле OrderBy.QueryOver OrderBy дочернее свойство, используя строки
Customer custAlias = null;
session.QueryOver<Campaign>()
.JoinAlias(x => x.Customer,() => custAlias)
.OrderBy(() => custAlias.Name).Desc() // want to use string property name
.List();
можно указать OrderBy, используя строку с чем-то вроде:
.OrderBy(Projections.Property("DOB")).Desc();
Но это ищет «DOB» на субъекте кампании, а не лицо ребенка клиента. Возможно ли получить псевдоним, используемый NH, и затем установить путь к свойству, например.
.OrderBy(Projections.Property("cust.DOB")).Desc(); // where "cust" is the alias
Любые идеи?
Спасибо, xanatos, который сработал. Я бы никогда не догадался, что имя переменной C# можно использовать в строковом пути! Очевидно, что-то я не понимаю о переменных и псевдонимах ... – Chet
@Chet Нет, так работает NHibernate, а не что-то общее из C# или .NET. Это нечто уникальное. Это происходит потому, что QueryOver и Criteria API (старый API на основе текста) являются двумя ветвями из трех, поэтому они должны иметь возможность общаться. И их «общий» язык - это «текст», а не «отраженные свойства»/«деревья выражений», – xanatos