NHibernate中的集合是否可以映射为只读?

时间:2010-01-10 11:42:12

标签: nhibernate collections

我定义了一个映射,其中父对象具有子对象的集合。在我的设计中,我希望能够删除子对象,而无需从父对象的集合中删除它们并重新保存父对象。但是,当我尝试这个时,我得到“删除对象将在保存时重新创建”错误。有没有办法防止这种情况,以便我可以简单地删除子对象,而不用担心从父集合中删除它?这感觉就像做了两倍的工作。理想情况下,我想从NHibernate的角度将父级的集合视为只读。

2 个答案:

答案 0 :(得分:0)

如果您发布映射文件会有所帮助,但听起来您需要将Inverse=true添加到集合映射中。这意味着子对象负责处理任何保存或更新,而不是父对象。

然而,在数据库中,它们的模型都是相同的。子项应具有父行ID的列。然而,NHibernate将基于Inverse属性创建不同的SQL。我想提供更多细节,但我自己也在学习NHibernate。

答案 1 :(得分:0)

我相信您唯一需要做的就是将父级映射文件中的子对象集合设置为cascade="none"

当然,这也会阻止通过将子对象分配给父对象并更新父对象来保存子对象。如果可以,那么你就得到了解决方案。