nhibernate-删除父子关系的最有效方法?

nhibernate-删除父子关系的最有效方法?,nhibernate,Nhibernate,我已使用cascade=“all delete orphan”映射子集合并尝试 var parent = session.Load<Parent>(id); session.Delete(parent); var parent=session.Load(id); 删除(家长); 但它也会在删除父对象及其所有子对象之前加载它们。 有没有一种方法可以在不加载家长和孩子的情况下删除他们,或者至少只加载家长?我不是NHibernate的专家,并且仍然在学习这方面的知识。我将被更正,但默认

我已使用cascade=“all delete orphan”映射子集合并尝试

var parent = session.Load<Parent>(id);
session.Delete(parent);
var parent=session.Load(id);
删除(家长);
但它也会在删除父对象及其所有子对象之前加载它们。
有没有一种方法可以在不加载家长和孩子的情况下删除他们,或者至少只加载家长?

我不是NHibernate的专家,并且仍然在学习这方面的知识。我将被更正,但默认情况下不会进行延迟加载,即父级。子级仅在访问时进行初始化(并加载数据)

删除父级时,使用all delete OVERNAR建立的关系模型意味着在删除父级时必须首先删除与父级相关的子成员。这可以解释为什么要加载它们


如果出于性能原因而试图避免加载子项,那么可以针对这种特殊情况实现自己的SQL。

非常简单,只需在数据库上使用级联删除即可。如果这不是使用在数据库级别上运行的自定义查询的选项,或者只使用此方法

NHibernate无法通过查询实现这一点,它需要检索每个要删除的单独行,因为它需要行的键来删除它们。这就是为什么这么贵的原因

只需在数据库上使用级联删除。这是数据库擅长的事情