Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
01.11.2012, 13:22
|
|||
---|---|---|---|
LazyInitializationException illegal access to loading collection при маппинге one-to-many |
|||
#18+
Есть пара сущностей: Код: 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.
Код: 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.
И их маппинги: Код: 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.
При выполнении кода Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
Получаем исключение NHibernate.LazyInitializationException с описанием illegal access to loading collection. Что ему не так? Как это побороть? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
01.11.2012, 13:28
|
|||
---|---|---|---|
LazyInitializationException illegal access to loading collection при маппинге one-to-many |
|||
#18+
Lexxxxx, а метод Load используется умышленно? Чем Get не подошёл? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
01.11.2012, 13:39
|
|||
---|---|---|---|
LazyInitializationException illegal access to loading collection при маппинге one-to-many |
|||
#18+
SolYUtor, Да вот как раз для отложенной загрузки он и нужен. Черт его знает сколько ордеров у юзера. Думаю не нужно их таскать все из базы постоянно. (P.S. строка .Access.ReadOnlyPropertyThroughLowerCaseField() в мапинге UserMap указана по ошибке и в коде отсутствует.) ... |
|||
:
Нравится:
Не нравится:
|
|||
|
01.11.2012, 13:49
|
|||
---|---|---|---|
LazyInitializationException illegal access to loading collection при маппинге one-to-many |
|||
#18+
Lexxxxx, Это не совсем та отложенная загрузка, о которой вы думаете. Начнём с простого: 1. Get() грузит из базу только таблицу с самой сущностью, при этом заполняются все поля, которые есть в этой таблицы. Все связи (включая коллекции) не грузятся, пока не будут вызываны. 2. Load() - не грузит из базы вообще ничего! Он возвращает вам пустой прокси-класс. И при первом же обращении к полям полезет в базу с запросом к основной таблице. Его использование оправдано в некоторых случаях, но явно не в этом. PS. Влючите в конфиге хибера LogSqlToConsole, и смотрите, что реально происходит. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
01.11.2012, 13:57
|
|||
---|---|---|---|
LazyInitializationException illegal access to loading collection при маппинге one-to-many |
|||
#18+
SolYUtor, Спасибо за подсказку об отложенной загрузке. Проблема решена путем добавления в OrderMap строки .Access.LowerCaseField() для свойства User. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=17&tablet=1&tid=1350197]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
62ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
2ms |
others: | 304ms |
total: | 458ms |
0 / 0 |