Можно ли сопоставить коллекцию в NHibernate только для чтения? - PullRequest
0 голосов
/ 10 января 2010

У меня определено отображение, где родительский объект имеет коллекцию дочерних объектов. В моем проекте я хотел бы иметь возможность удалять дочерние объекты без необходимости удалять их из коллекции родительского объекта и повторно сохранять родительский объект. Однако, когда я пытаюсь это сделать, я получаю сообщение об ошибке «удаленный объект будет создан заново при сохранении». Есть ли способ предотвратить это так, чтобы я мог просто удалить дочерний объект и не беспокоиться о его удалении из родительской коллекции? Это похоже на то, чтобы делать двойную работу. В идеале я хотел бы рассматривать коллекцию родителей как доступную только для чтения с точки зрения NHibernate.

Ответы [ 2 ]

0 голосов
/ 11 января 2010

Я считаю, что единственное, что вам нужно сделать, это просто установить коллекцию дочерних объектов в файле отображения родителя на cascade="none".

Конечно, это также предотвратит сохранение дочерних объектов, назначив их родительской коллекции и обновив родительский. Если все в порядке, значит, у вас есть решение.

0 голосов
/ 10 января 2010

Будет полезно, если вы разместите свои файлы сопоставления, но похоже, что вам нужно добавить Inverse=true в сопоставление коллекции. Это означает, что дочерний объект отвечает за обработку любого сохранения или обновления, а не родительский.

Однако в базе данных все моделируется одинаково. У дочернего элемента должен быть столбец для идентификатора родительской строки. NHibernate создаст другой SQL на основе свойства Inverse. Я бы хотел рассказать подробнее, но я тоже изучаю NHibernate.

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