我有一个像这样的对象模型:
Folder
- 名称简单的结构等。File
- 包含对其中包含的Folder
的引用的复杂对象。文件夹不知道其文件,我不想让它知道。关系是多对一,应仅在文件方面知道。
无论如何,我想依靠我的数据库的ON DELETE CASCADE功能,以便当我删除文件夹时,我希望自动删除该文件夹中的所有文件。我不能使用NHibernate的级联,因为从文件夹到文件没有任何关系。
我知道在{em>一对多关系的情况下,<key>
元素为there is on-delete="cascade"
option,但我无法找到与我的模型等效的关系是在许多方上定义。
我做错了什么或者我是否真的需要手动删除已删除文件夹中的所有文件?
答案 0 :(得分:1)
您可以尝试使用access="noop"
映射一对多方。这样你就不需要你的类中的属性,但仍然有映射。
在Fluent NHibernate中会有这样的感觉:
HasMany(Reveal.Member<Folder, IEnumerable<File>>("_files"))
.KeyColumn("column_name")
.Access.NoOp()
.Inverse()
.ForeignKeyCascadeOnDelete();
注意:为此,您需要_files
类中IEnumerable<File>
类型的Folder
字段(Fluent NHibernate的限制,只能映射真正存在的字段或属性)。但是这个字段总是null
,永远不会被使用。