0

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

我注意到的一个后果是级联删除似乎失败了(孩子没有在数据库中被删除,导致参照完整性违规)。这是唯一的后果还是我需要注意的其他问题?

对于何时应该是单向或双向关系是否有任何指导方针?

谢谢

4

1 回答 1

1

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

但是您将无法轻松地浏览图表。你可以从孩子到父母,但显然不能从父母到孩子。因此,每次您想要来自父母的所有孩子时,您都必须发出查询。

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

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

于 2010-09-16T16:50:43.993 回答