|
Nhibernate - реализация поиска
|
|||
---|---|---|---|
#18+
Есть таблица с большим количеством связей (1*n, n*m) и записей. Нужно организовать поиск записей в этой таблице, используя все текстовые поля этой таблицы и связанных. Результат выводить пэйджингом. В хранимой процедуре я создавал временную таблицу, состоящую из конкатенации всех текстовых полей этой таблицы и связанных таблиц и идентификатора записи, затем использовал LIKE. Как подобный механизм можно реализовать в Nhibernate? В особенности интересует: придется ли сначала все записи тянуть с sql-сервера на web-сервер, а только затем в коде делать поиск? Если так, то весьма прискорбно. И интересует вопрос, как NHibernate работает внутри: транслирует код в sql-запросы как linq2sql? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2012, 14:21 |
|
Nhibernate - реализация поиска
|
|||
---|---|---|---|
#18+
oblomov86В хранимой процедуре я создавал временную таблицу, состоящую из конкатенации всех текстовых полей этой таблицы и связанных таблиц и идентификатора записи, затем использовал LIKE. Сколько же длилось формировние таблицы и поиск по ней? oblomov86Как подобный механизм можно реализовать в Nhibernate? Боюсь, это не тот механизм, который следует использовать в NHibernate. Для этих целей лучше использовать полнотекстовый поиск. Вкратце, для NHibernate есть проект - NHibernate.Search, который использует Lucene.Net для организации полнотекстового поиска. Теорию можно прочитать здесь . Краткое практическое введение здесь . PS. На крайняк NHibernate может маппить результаты выполнения хранимых процедур и обычных SQL-запросов. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2012, 23:16 |
|
Nhibernate - реализация поиска
|
|||
---|---|---|---|
#18+
Спасибо. Возможно ли в NHibernate отключать "ленивую загрузку" во время выполнения? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2012, 17:44 |
|
Nhibernate - реализация поиска
|
|||
---|---|---|---|
#18+
oblomov86, Вот прям отключать во время выполнения нельзя. Но при написании запросов можно указывать, чтобы хибер грузил связанные сущности и коллекции одним запросом. В hql - это слово fetch. Например: Код: c# 1. 2. 3.
Для LINQ и QueryOver ищите методы расширения, в которые оно входит. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2012, 15:02 |
|
Nhibernate - реализация поиска
|
|||
---|---|---|---|
#18+
Вот, а как это сделать через маппинг, не через Query? То есть что надо написать в маппинге, чтобы данное поле всегда грузилось? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.03.2012, 11:11 |
|
|
start [/forum/topic.php?fid=17&fpage=35&tid=1350410]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
47ms |
get topic data: |
13ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
2ms |
others: | 309ms |
total: | 452ms |
0 / 0 |