|
Iclude в NHibernate
|
|||
---|---|---|---|
#18+
Доброго времени суток Работая с EF (c включенным lazyLoading), если я хотел получить n+1 сущность, то я использовал метод Include(string entityName) класса ObjectSet<Entity> Например, чтобы сразу загрузить все категории и их статьи я писал что-то похожее на данный код (давно EF использовал) return ObjectSet<Category>.Include("Post"); Недавно познакомился с NHibernate и пока не могу найти аналогичную возможность в данном ORM. Она должна быть, но наверно я неправильно ищу. Подскажите, как выгружать n+1 сущность в nHibernate Я пару недель назад, когда задавался этим вопросом, то пытался реализовать это следующим образом Код: c# 1. 2. 3. 4. 5.
Но NHProfiler показал, что загружены только категории ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2012, 04:11 |
|
Iclude в NHibernate
|
|||
---|---|---|---|
#18+
besserebrenik, ICriteria - двоольно старый API. Если нет принципиальных возражений - используйте QueryOver: Код: c# 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2012, 10:38 |
|
Iclude в NHibernate
|
|||
---|---|---|---|
#18+
besserebrenik, А уже если не боитесь строк, то hql делает еще проще: Код: c# 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2012, 10:44 |
|
Iclude в NHibernate
|
|||
---|---|---|---|
#18+
SolYUtor, Спасибо за ответ, сегодня опробую в учебных примерах Строк не боюсь, т.к. код в репозиториях будет спрятан - главное, чтобы работал подход :) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2012, 15:43 |
|
Iclude в NHibernate
|
|||
---|---|---|---|
#18+
SolYUtor, И снова спасибо за ответ! Это правда уже оффтоп, но действительно я набил шишек на тех вещах, которые реально не дают пользы. Я очень долго пытался впихнуть презентеры в свой дипломный проект, но оказалось, что это абсолютно ненужная вещь, если доменная модель не аннемична (anemic domain model). Rich Domain Model (не ошибся надеюсь в терминах), в которой инкапсулирована логика предметной области и соответственно тщательно протестирована, дополнительного слоя, для представления, не требует. Еще больше времени я убил на изучение паттерна Unit Of Work , который в большинстве реализаций был обычной оберткой над транзакцией и зачастую весьма сложной. Но насчет репозиториев нужно подумать и возможно набить шишки самому.. Пока что один абстрактный репозиторий , и его реализации на каждый aggregation-root для меня это не так страшно.. Хотя это в идеале, обычно репозиториев больше. За ссылки спасибо большое, очень интересно! ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2012, 23:43 |
|
Iclude в NHibernate
|
|||
---|---|---|---|
#18+
besserebrenik, если позволите, еще пару советов напоследок: 1. Хорошая практика при использовании NHibernate - это рассматривать ISession как UnitOfWork. Все изменения в объектах, сделанные в рамках сессии будут автоматом сброшены в бд. 2. Rich Domain Model описывающая логику предметной области не всегда хорошо для непосредственно отображения. Поэтому частенько разрабатывают дополнительную модель, описывающую логику представления (это, что Фаулер ранее называл Presentation Model, а теперь более модно называть MVVM). 3. Презентеры вещь хорошая, но требует некоторого опыта и понимаю. В общем, для понимания, как строить UI очень советую осилить серию блогов от Jeremy D. Miller 'а. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2012, 12:03 |
|
Iclude в NHibernate
|
|||
---|---|---|---|
#18+
SolYUtor, Позвольте я объясню свое разочарование в MVP, (я с начала пытался сделать чистый MVP, но по ходу работы у меня выродилось в Presentation Model) Я использовал presentation model, но буквально недавно я снес проект, содержащий слой презентеров, из своего решения и одна из причин, заставившей меня это сделать, объяснена ниже Интерфейс вьюшки 1 отображает список некоторой доменной сущности 2 может показывать ошибку 3 спрашивать подтверждения пользователя 4 содержит две кнопки, первая - закроет въюшку, вторая откроет новый вью с отображением более подробной информации о доменной сущности Код: c# 1. 2. 3. 4. 5. 6. 7. 8.
презентер, продемонстрирован только конструктор Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
И реализация view Код: c# 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. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41.
и фрагмент из точки старта приложения Код: c# 1. 2. 3. 4.
Проблема для меня начинается, когда пользователь щелкает по кнопке - "показать детально". Возникает вопрос - презентер должен создать новый вью для отображения детальных данных сущности и передать ей эту самую сущность? Но тогда презентер знает о реализации вью (хотя это можно обойти через IoC, но из пушки по воробъям..) Или когда пользователь щелкает по кнопке, я должен создать во вью новую форму для детального отображения сущности, создать соответствующий презентер и передать, в качестве модели, _bindingSource.Current ? ну примерно так Код: c# 1. 2. 3. 4. 5. 6.
Но в таком случае уже вью знает о презентере ))) Ведь по идее, проект со вьюшками видит модель и сборку с презентерами. Сборка с презентерами также знает о модели. А презентеры знают только об интерфейсах вью (их предпочтительно расположить в сборке с презентарами). Но хотя если не заморачиваться об областях видимости, то я бы предпочел второй подход - когда view создает соответствующий презентер и передает ему модель. Почему-то вопросам навигацию в MVP посвящено очень мало внимания :( ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2012, 13:21 |
|
Iclude в NHibernate
|
|||
---|---|---|---|
#18+
besserebrenik, P.S. извиняюсь перед администратором за оффтоп, я сильно отошел от темы в заголовке ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2012, 13:22 |
|
Iclude в NHibernate
|
|||
---|---|---|---|
#18+
besserebrenik, да забей ты на этих шаблонистов создай свои шаблоны - удобные и эффективные для тебя илиты хошь дело догматиков продолжить? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2012, 13:28 |
|
Iclude в NHibernate
|
|||
---|---|---|---|
#18+
вот фрагмент домена прога сама должна по семантике связей (+ доп семантика введенная пользователем) создавать агрегатные типы (include твои) для заданного контекста, визуализировать автоматически данный агрегат (разные представления агрегата в контексте визуализации) и обеспечить целостность агрегата в заданном контексте и в контексте домена. А всех фаулеров и гамм на пенсию нафиг. заодно и буча. почему то болбаный форум не принимет картинки. никак муся старался. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2012, 13:41 |
|
Iclude в NHibernate
|
|||
---|---|---|---|
#18+
ViPRos, Я начитался книг и статей по best practices и захотел сделать интересный, с точки зрения архитектуры, проект.) Но больше меня, как начинающего специалиста, интересует выработка некой методологии написания проектов и я, не имея собственного опыта, стал следовать за догматистами, о чем уже жалею ) Если кода не так много, то может через спойлер сюда или ссылочку на репозиторий .. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2012, 16:12 |
|
Iclude в NHibernate
|
|||
---|---|---|---|
#18+
besserebrenik, не дает форум прикрепить ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2012, 16:14 |
|
Iclude в NHibernate
|
|||
---|---|---|---|
#18+
догматисты = (по русски) догматики :) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2012, 16:16 |
|
Iclude в NHibernate
|
|||
---|---|---|---|
#18+
смотри какой инфой прога владеет что ей стоит самой интерпретировать метаинфу это только структурная инфа, а есть и поведенческая ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2012, 16:45 |
|
Iclude в NHibernate
|
|||
---|---|---|---|
#18+
ViPRos, теперь мы говорим - создай персистентный агрегат (выбранные типы) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2012, 16:50 |
|
Iclude в NHibernate
|
|||
---|---|---|---|
#18+
получаем агрегат ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2012, 16:52 |
|
Iclude в NHibernate
|
|||
---|---|---|---|
#18+
ViPRos, визуализируем ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2012, 16:55 |
|
Iclude в NHibernate
|
|||
---|---|---|---|
#18+
ViPRos, Впечатляет! ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2012, 22:37 |
|
Iclude в NHibernate
|
|||
---|---|---|---|
#18+
SolYUtorРепозиторий при наличии хорошей ORM - зло, зло, зло а если вдруг понадобится сменить ORM? месяцами будете переделывать? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2012, 22:38 |
|
Iclude в NHibernate
|
|||
---|---|---|---|
#18+
17-77а если вдруг понадобится сменить ORM? месяцами будете переделывать? Зачем страдать фигнёй исходя из ложного предположения? И ссылки почитайте, полезно будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2012, 10:10 |
|
|
start [/forum/topic.php?fid=17&msg=37765090&tid=1350360]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
64ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 174ms |
0 / 0 |