powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / NHibernate: Нужно ли делать new List() в конструкторе Entity для его коллекций?
4 сообщений из 4, страница 1 из 1
NHibernate: Нужно ли делать new List() в конструкторе Entity для его коллекций?
    #37281155
NHibernate_User_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день,
Столкнулся вчера с проблемой - из БД читался через Nhibernate 3 раза подряд один и тот же объект (Document) с коллекцией других объектов, в первый раз у него коллекция инициализировалась правильно, во второй и третий раз стиралась (становилась пустой).

Конструктор объекта без параметров (NHibernate использует его для чтения из базы) был примерно такой
Код: plaintext
1.
2.
3.
4.
5.
{
  Id = Guid.NewGuid();
  CreationDate = DateTime.Now;
  wareHouses = new List<WareHouse>();
}

Я только убрал из него создание new List(), и все заработало: варехаусы перестали очищаться при 2-м и 3-м запросах к базе.

Я так понял, это потому, что NHibernate, видя, что на данное поле подсунули new List(), решил, что мы хотели стереть коллекцию. Однако непонятно, почему при первом запросе все работало.

В некоем примере из Интернет, что у меня есть, коллекции создаются в любом случае: даже в конструкторе, который NHibernate вызывает при чтении из БД.

Вопрос, почему у меня не работало?

Сегодня попытался вернуть на место создание List(), как ни странно, при всех запросах коллекция оказывается правильной. (Впрочем, благодаря советам в соседней ветке удалось сократить количество запросов от программы во много раз и повысить производительность).

Как правильно вообще-то? Сделать для entity конструктор без параметров только для NHibernate, или вызывать его из обычного конструктора (применяемого для создания новой сущности)?
entity()
{...}
entity(param1, param2, param3):this()
{...}
допустим ли такой вариант? В какой из конструкторов класть создание пустых коллекций
wareHouses = new List<WareHouse>();
...
Рейтинг: 0 / 0
NHibernate: Нужно ли делать new List() в конструкторе Entity для его коллекций?
    #37281427
SolYUtor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NHibernate_User_Вопрос, почему у меня не работало?


Трудно заниматься телепатией, но подозреваю, что вы где-то перезаписывали эту коллекцию новой. Надо было смотреть дебаггером сеттер свойства, или где-то еще перезаписывали поле в классе.

NHibernate_User_Как правильно вообще-то?


Делать, как я рисовал в соседней ветке, и не парится с множеством конструкторов.
...
Рейтинг: 0 / 0
NHibernate: Нужно ли делать new List() в конструкторе Entity для его коллекций?
    #37281428
SolYUtor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добавка: всегда создавать коллекции в конструкторе без параметров.
...
Рейтинг: 0 / 0
NHibernate: Нужно ли делать new List() в конструкторе Entity для его коллекций?
    #37281965
NHibernate_User_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Понятно.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / NHibernate: Нужно ли делать new List() в конструкторе Entity для его коллекций?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]