【发布时间】:2013-05-28 11:44:39
【问题描述】:
这是我的问题:我有一组 ID。这些是根实体集合的 ID。现在我想有效地删除所有这些根实体。
我不能使用 WHERE Id IN (1, 2, 3) 类型的子句,因为我要删除带有子项的根实体。
我想知道是否可以避免检索所有根实体并一一删除它们。这种方法的问题不在于SELECT,它有很多单独的DELETE 语句。
NHibernate 是否可以批量处理,包括删除所有子项?额外的复杂性:孩子可以有自己的孩子。
所以我希望 NHibernate 首先删除带有 IN 子句的“最底层”子句(可能是多个子句),然后是带有 IN 子句的子句,最后是带有 IN 子句的根实体.
如果这不可能,有什么好的方法可以使用 NHibernate 有效地删除多个根实体?
【问题讨论】:
-
NHibernate 应该如何知道哪些是孙子而不会将子代加载到内存中? NHibernate 还支持也用于审计的钩子,如果某些删除将采用不同的代码路径,它将使它们无用。最简单的方法是使用您想要的删除运行自定义 sql
标签: nhibernate cascading-deletes