Пожалуйста, прости меня, если я не очень хорошо объясню это. Во-первых, я использую NHibernate 2.0 с .NET 3.5. В основном у меня есть сущность "EntityA" (для простоты) с одним или несколькими дочерними элементами типа EntityB. Каждый EntityB имеет номер, указывающий, как недавно он был создан. Я хотел бы удалить все, кроме самого последнего объекта EntityB. Это является частью операции очистки.
Я изо всех сил пытаюсь найти эффективный способ сделать это. Проблема в том, что экземпляры EntityB на самом деле довольно сложны и могут иметь сотни дочерних объектов. Список EntityB на EntityA загружается лениво, и в идеале я бы хотел избежать загрузки его в память, если это возможно.
Я попытался передать HQL-запрос в Session.Delete. К сожалению, HQL, похоже, не поддерживает верхний оператор, поэтому я не могу сделать выборку, чтобы выбрать, какие из них не следует удалять.
Каскады настроены в NHibernate, а не в базе данных. Я не уверен, но мне интересно, загрузит ли NHibernate весь граф объектов, даже если удаление выполняется через HQL.
Любой совет будет оценен.
[Edit] К сожалению, любой запрос должен быть HQL, а не SQL, поскольку он должен быть независимым от базы данных. [/ Edit]
Приветствия
Джеймс