我正在尝试移植一个大型的.NET实体图来使用NHibernate,但我遇到了一个问题,即大多数关系都是单向定义的-在大多数情况下,子类包含对父类的引用,但父类不包含对其子类的引用集合。添加所有集合以将关系转换为双向关系将是一项相当大的工作,所以我想知道不这样做对NHibernate会有什么影响?
我注意到的一个后果是级联删除似乎失败了(孩子在数据库中没有被删除,导致引用完整性冲突)。这是唯一的后果吗?还是有其他我需要注意的问题?
对于关系应该是单向的还是双向的,有什么指导原则吗?
谢谢
发布于 2010-09-17 00:50:44
我认为不能级联删除将是NHibernate本身唯一的问题。
但是你将不能轻易的走出这张图。你可以从子节点到父节点,但显然不能从父节点到子节点。因此,您必须在每次想要一个父对象的所有孩子时发出一个查询。
因此,如果您对持久化域模型使用NH,其中有一个根对象,您需要使用子对象来执行某些操作,则必须从模型中发出查询来获取子对象。因此,您的模型将耦合到您的数据访问。
或者,您必须将子对象作为集合传递给父对象,但这样就很容易让模型上的集合开始宽度,这样NH就可以为您填充它们。
https://stackoverflow.com/questions/3727787
复制相似问题