如何防止删除父项时NHibernate在一对多关系中加载子集合

如何防止删除父项时NHibernate在一对多关系中加载子集合,nhibernate,nhibernate-mapping,cascading-deletes,Nhibernate,Nhibernate Mapping,Cascading Deletes,我有公司->用户一对多关系,我希望用户被级联删除,当公司被删除。问题是NHibernate(根据控制台输出:我已将NHibernate配置为将生成的sql记录到控制台)首先加载子集合,然后对每个子集合执行删除。如何配置NHibernate在不加载子集合的情况下级联删除子集合?请看下面的答案: 可能存在一些优化空间,但实际上并没有那么糟糕,在某些情况下,加载子项甚至比盲目执行一些SQL delete语句更好 NHibernate支持“删除级联”选项 但它只在某些情况下起作用。它会告诉您何时加载

我有公司->用户一对多关系,我希望用户被级联删除,当公司被删除。问题是NHibernate(根据控制台输出:我已将NHibernate配置为将生成的sql记录到控制台)首先加载子集合,然后对每个子集合执行删除。如何配置NHibernate在不加载子集合的情况下级联删除子集合?

请看下面的答案:

可能存在一些优化空间,但实际上并没有那么糟糕,在某些情况下,加载子项甚至比盲目执行一些SQL delete语句更好

NHibernate支持“删除级联”选项



但它只在某些情况下起作用。它会告诉您何时加载映射文件。

因此,使用此配置,DB负责删除child?在这种情况下,如果子集合可以包含许多实体,那么最好是在Db中还是仍然在NH中执行此操作?NH将生成一个“on delete cascade”外键。如果您自己编写db模式,则需要创建这样一个外键。我想它总是更快,但并不总是可能的。你必须测试它。最后,它需要从数据库中删除数据,这无论如何都很慢。
<key column="column" on-delete="cascade" />