Сохранять коллекцию на высшем уровне? - PullRequest
2 голосов
/ 10 августа 2009

NHibernate позволяет мне запрашивать базу данных и получать взамен IList объектов. Предположим, я получил список из пары десятков объектов и изменил полдюжины или около того. Есть ли у NHibernate способ сохранить изменения в коллекции, или мне нужно сохранить каждый объект при его изменении?

Вот пример. Предположим, я запускаю следующий код:

var hql = "from Project";
var query = session.CreateQuery(hql);
var myProjectList = query.List<Project>();

Я верну IList, содержащий все проекты. Теперь предположим, что я выполняю следующий код:

var myNewProject = new Project("My New Project");
myProjectList .Add(myNewProject);

И скажем, я делаю это несколько раз, добавляя в список несколько новых проектов. Теперь я готов сохранить изменения в коллекции.

Я бы хотел сохранить изменения, просто передав myProjectList текущей сессии ISession для обновления. Но ISession.SaveOrUpdate () , похоже, принимает только отдельные объекты, а не коллекции, такие как myProjectList. Есть ли способ, которым я могу сохранить изменения в myProjectList, или мне нужно сохранить каждый новый объект при его создании? Спасибо за вашу помощь.

Дэвид Вениман
Системы предвидения

1 Ответ

1 голос
/ 10 августа 2009

Если вы загружаете объекты, как в вашем примере - тогда да, вы должны сохранять их один за другим.

Однако, если вы сделаете небольшое изменение в дизайне и загрузите что-то вроде: Учетная запись, у которой есть IList<Project> - если вы укажете каскад «what_cascade_you_need» в отображении, то при изменении проектов в Учетной записи вам нужно только сохраните учетную запись, и все будет сохранено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...