У меня есть такое требование:
Требование 1)
select * from BigTable
1) Where BigTable.User.FullName = XYZ
2) Where BigTable.Network.Name = XYZ
Пользователь и Сеть - это отдельные таблицы, связанные FK.Есть 2 типа опций, как указано выше.На самом деле это используется для поиска.
Требование 2)
1) Order By BigTable.User.FullName ASC/DESC
2) Order By BigTable.Network.Name ASC/DESC
После того, как поиск загружен, его следует упорядочить по любой из опций, исходя из того, с чем пользователь предпочитает сортировать данные.
Я хочу реализовать более усовершенствованный код, в котором мне не нужно дублировать многие многочисленные коды JoinQueryOver только для того, чтобы справляться со всеми видами сценариев, которые загружают объединенную сущность, являющуюся текущей сущностью;поэтому я прибегаю к использованию JoinAlias, чтобы у меня была стандартизированная реализация для всего выполнения кода.Обратите внимание, что я не хочу полагаться на HQL, если это вообще возможно.
По какой-то причине я не могу действительно перевести свою логику в кодирование NHibernate.См. Ниже:
var Query = session.QueryOver<BigTable>();
User funny = null;
Query.JoinAlias(x => x.User, () => funny).Where(() => funny.Full_Name.IsInsensitiveLike("%" + SearchTextFilter + "%"));
return Query.OrderByAlias(() => funny.Full_Name).Desc
.Skip(skip)
.Take(take)
.List<MasterLicensee>();
Я получаю эту ошибку: [QueryException: дубликат пути ассоциации: Пользователь]
Есть идеи, что я набрал неправильно или что-то?:)
РЕДАКТИРОВАТЬ:
Моя идея состоит в том, чтобы разделить их для многих возможных сценариев.
Значение, например:
Требование 1) Поиск по полному имени пользователя.
Затем
Требование 2) Сортировка по имени сети.
Только исходя из этих 2 требований, мы можем иметь возможность:
- Требование 1) Опция 1 Требование 2) Опция 1
- Требование 1) Опция 1 Требование 2) Опция 2 <<< это проблемы </li>
- Требование 1) Вариант 2 Требование 2) Вариант 1
- Требование 1) Вариант 2 Требование 2) Вариант 2 <<< это проблемы </li>
, с которыми будет утомительно и некрасиво кодировать.Поэтому я думаю разделить их на сегменты.
Смеси с различными необходимыми объединениями, например:
select * from BigTable Where BigTable.User.FullName = XYZ Order By BigTable.Network.Name ASC/DESC
Как я могу получить это в NHibernate Query ??Пожалуйста, помогите