|
NHibernate: как сделать мапинг на основе нативного SQL-запроса
|
|||
---|---|---|---|
#18+
Пытаюсь делать так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
Необработанное исключение: System.ArgumentException: No positional parameters in query: select b.*, t.name as Theme from books as b, theme as t where b.id_theme = t.id как это можно сделать? спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2011, 13:45 |
|
NHibernate: как сделать мапинг на основе нативного SQL-запроса
|
|||
---|---|---|---|
#18+
kmaw, не буду говорить со всей определённостью, но думаю вам надо написать как-то так: Код: plaintext 1. 2.
PS. А зачем вам это надо? Боюсь много проблем принесёт. Почему стандартные средства NH не использовать? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2011, 17:00 |
|
NHibernate: как сделать мапинг на основе нативного SQL-запроса
|
|||
---|---|---|---|
#18+
SolYUtor, стандартные средства я пока не знаю. изучаю (эмпирически) NHibernate - отрабатываю интересные для меня сценарии использования. Вот так вроде получилось: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27.
но теперь не работает Код: plaintext 1.
т.е. весь спиок как теперь выбрать? для обычного (насколько я, как новичек, успел вкурить) мапинга это работало. А вообще цель такая. Есть ситуации, когда 1. для некоторых запросов я не хочу использовать полное отображение связанных объектов - это могут быть не просто справочники "id - name", а таблицы с кучей полей, из которых мне надо пару-тройку полей. Хочу чтобы в классе были только ID-шники и эти самые поля (только для чтения) 2. хочу чтобы я сам дал БД sql запроса - он может быть сложным 3. а вот insert/update типовой - поэтому пусть мапится объект на таблицу или др. словами - для чтения из БД и отображения на UI использовать вьюху, а для записи - таблицу/процедуру (до процедуры пока не добрался). как-то так ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2011, 20:58 |
|
NHibernate: как сделать мапинг на основе нативного SQL-запроса
|
|||
---|---|---|---|
#18+
kmaw, этот велосипед уже изобрели. И называется он проекции. Для начала можно почитать здесь , здесь и здесь (уделите внимание select new()). И гугл тоже никто не отменял. А родного SQL старайтесь избегать. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2011, 08:28 |
|
NHibernate: как сделать мапинг на основе нативного SQL-запроса
|
|||
---|---|---|---|
#18+
SolYUtor, Про проекции вреде разобрался, очень поверхностно. Но все равно вопрос остался - что я не так делал в приведённом мной примере, почему он не разрешает выбрать все строки (я подозреваю, что там параметр :id теперь это не дает сделать, но без него тоже ошибка)? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2011, 21:03 |
|
NHibernate: как сделать мапинг на основе нативного SQL-запроса
|
|||
---|---|---|---|
#18+
"А родного SQL старайтесь избегать" как не старайся, а все равно найдется пара-тройка мест (?), где без него тяжко придется. так вот я и хочу, так сказать, подстраховаться. тем более, что NH это позволяет (как про него написано) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2011, 21:06 |
|
NHibernate: как сделать мапинг на основе нативного SQL-запроса
|
|||
---|---|---|---|
#18+
Чем не подошел AliasToBeanResultTransformer / IResultTransformer? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2011, 23:15 |
|
NHibernate: как сделать мапинг на основе нативного SQL-запроса
|
|||
---|---|---|---|
#18+
kmawSolYUtor, Про проекции вреде разобрался, очень поверхностно. Но все равно вопрос остался - что я не так делал в приведённом мной примере, почему он не разрешает выбрать все строки (я подозреваю, что там параметр :id теперь это не дает сделать, но без него тоже ошибка)? Такова плата за использование SQL для загрузки, поскольку вы отгораживаетесь от структуры таблиц. Как по-вашему NHibernate должен догадаться, как ему изменить ваш запрос для загрузки списка объектов? Шаманить не умеет. Два правильных способа делать выборки: проекции и IResultTransformer. Попытка часть грузить entity через loader query-ref носит ректальный характер, а потому болезненна. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2011, 09:37 |
|
|
start [/forum/topic.php?fid=17&fpage=44&tid=1350746]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
50ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
2ms |
others: | 300ms |
total: | 451ms |
0 / 0 |