【发布时间】:2009-10-03 01:37:13
【问题描述】:
如果我没有很好地解释这一点,请原谅我。首先,我将 NHibernate 2.0 与 .NET 3.5 一起使用。基本上,我有一个实体“EntityA”(为简单起见),它有一个或多个 EntityB 类型的子级。每个 EntityB 都有一个数字,表示它是最近创建的。我想删除除 x 个最近的 EntityB 之外的所有内容。这构成了清除操作的一部分。
我正在努力寻找一种有效的方法来执行此操作,问题是 EntityB 实例实际上非常复杂,并且本身可能有数百个子对象。 EntityA 上的 EntityB 列表是延迟加载的,如果可能的话,我最好避免将其加载到内存中。
我尝试将 HQL 查询传递给 Session.Delete。不幸的是,HQL 似乎不支持 top 语句,所以我无法进行子选择来选择哪些不删除。
级联是在 NHibernate 中设置的,而不是在数据库中。我不确定,但我想知道 NHibernate 是否会加载整个对象图,即使删除是通过 HQL 完成的。
任何建议将不胜感激。
[Edit]不幸的是,任何查询都必须是 HQL 而不是 SQL,因为它需要独立于数据库[/Edit]
干杯,
詹姆斯
【问题讨论】:
标签: c# nhibernate