代码之家  ›  专栏  ›  技术社区  ›  Jason Barile

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

  •  0
  • Jason Barile  · 技术社区  · 16 年前

    我定义了一个映射,父对象有一个子对象的集合。在我的设计中,我希望能够删除子对象,而不必从父对象的集合中删除它们并重新保存父对象。但是,当我尝试此操作时,出现“deleted object will be re created on save”错误。有没有一种方法可以防止这种情况,使我可以简单地删除子对象,而不必担心从父对象的集合中删除它?那感觉就像做了双倍的工作。从nhibernate的角度来看,理想情况下,我希望将家长的收藏视为只读。

    2 回复  |  直到 16 年前
        1
  •  0
  •   Daniel T.    16 年前

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

    但是,在数据库中,所有的模型都是一样的。子行应该有父行id的列。nhibernate将基于 Inverse 不过是财产。我想说得更详细些,但我也在学习自由主义。

        2
  •  0
  •   tolism7    16 年前

    我相信您只需要将父映射文件中的子对象集合设置为 cascade="none" .

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