|
NHibernate: Нужно ли делать new List() в конструкторе Entity для его коллекций?
|
|||
---|---|---|---|
#18+
Добрый день, Столкнулся вчера с проблемой - из БД читался через Nhibernate 3 раза подряд один и тот же объект (Document) с коллекцией других объектов, в первый раз у него коллекция инициализировалась правильно, во второй и третий раз стиралась (становилась пустой). Конструктор объекта без параметров (NHibernate использует его для чтения из базы) был примерно такой Код: plaintext 1. 2. 3. 4. 5.
Я только убрал из него создание new List(), и все заработало: варехаусы перестали очищаться при 2-м и 3-м запросах к базе. Я так понял, это потому, что NHibernate, видя, что на данное поле подсунули new List(), решил, что мы хотели стереть коллекцию. Однако непонятно, почему при первом запросе все работало. В некоем примере из Интернет, что у меня есть, коллекции создаются в любом случае: даже в конструкторе, который NHibernate вызывает при чтении из БД. Вопрос, почему у меня не работало? Сегодня попытался вернуть на место создание List(), как ни странно, при всех запросах коллекция оказывается правильной. (Впрочем, благодаря советам в соседней ветке удалось сократить количество запросов от программы во много раз и повысить производительность). Как правильно вообще-то? Сделать для entity конструктор без параметров только для NHibernate, или вызывать его из обычного конструктора (применяемого для создания новой сущности)? entity() {...} entity(param1, param2, param3):this() {...} допустим ли такой вариант? В какой из конструкторов класть создание пустых коллекций wareHouses = new List<WareHouse>(); ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2011, 17:42 |
|
NHibernate: Нужно ли делать new List() в конструкторе Entity для его коллекций?
|
|||
---|---|---|---|
#18+
NHibernate_User_Вопрос, почему у меня не работало? Трудно заниматься телепатией, но подозреваю, что вы где-то перезаписывали эту коллекцию новой. Надо было смотреть дебаггером сеттер свойства, или где-то еще перезаписывали поле в классе. NHibernate_User_Как правильно вообще-то? Делать, как я рисовал в соседней ветке, и не парится с множеством конструкторов. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2011, 20:44 |
|
NHibernate: Нужно ли делать new List() в конструкторе Entity для его коллекций?
|
|||
---|---|---|---|
#18+
Добавка: всегда создавать коллекции в конструкторе без параметров. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2011, 20:45 |
|
|
start [/forum/topic.php?fid=17&msg=37281427&tid=1350770]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
142ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
others: | 17ms |
total: | 251ms |
0 / 0 |