我什么时候可以在NHibernate中使用单向关系?

我什么时候可以在NHibernate中使用单向关系?,nhibernate,relationships,Nhibernate,Relationships,我试图移植一个大型的.NET实体图以使用NHibernate,但我遇到了一个问题,即大多数关系都是单向定义的——在大多数情况下,子类包含对父类的引用,但父类不包含对其子类的引用集合。添加所有集合以将关系转换为双向关系将是一项相当大的工作,因此我想知道不这样做会给NHibernate带来什么后果 我注意到的一个结果是级联删除似乎失败了(在DB中没有删除子项,导致引用完整性冲突)。这是唯一的后果还是我需要注意的其他问题 对于什么时候关系应该是单向的还是双向的,有什么指导方针吗 谢谢我认为无法级联删除

我试图移植一个大型的.NET实体图以使用NHibernate,但我遇到了一个问题,即大多数关系都是单向定义的——在大多数情况下,子类包含对父类的引用,但父类不包含对其子类的引用集合。添加所有集合以将关系转换为双向关系将是一项相当大的工作,因此我想知道不这样做会给NHibernate带来什么后果

我注意到的一个结果是级联删除似乎失败了(在DB中没有删除子项,导致引用完整性冲突)。这是唯一的后果还是我需要注意的其他问题

对于什么时候关系应该是单向的还是双向的,有什么指导方针吗


谢谢

我认为无法级联删除将是NHibernate本身的唯一问题

但是,您将无法轻松浏览图表。你可以从一个孩子到另一个孩子,但显然不能从一个孩子到另一个孩子。因此,每次您想要从父对象获得所有子对象时,都必须发出一个查询

因此,如果您对持久化域模型使用NH,其中您有一个根对象,您需要从中使用子对象进行某些操作,那么您必须从模型中发出查询以获取子对象。因此,您的模型将与您的数据访问相耦合

或者,您必须将子对象作为集合传递给父对象,但这样就很容易让模型上的集合开始宽度,以便NH可以为您填充它们