Я пытаюсь реализовать метод репозитория для удаления сущностей, использующих только первичный ключ, главным образом потому, что из веб-приложения мне обычно известен только первичный ключ при вызове «запроса на удаление» с веб-страницы.
Из-за ORM сегодня существует возможность получить сущность из базы данных, а затем удалить ее, что дает мне дополнительный обход.
Я мог бы использовать удаление HQL, но, поскольку я хочу создать общий метод удаления для всех сущностей, он не будет работать, если я не использую отражение, чтобы выяснить, какое поле является первичным ключом (выполнимо, но не чувствуется правильно).
Или NHibernate в природе нуждается в сущности для правильной обработки каскадов?
Я попробовал этот подход, предполагая, что он не будет загружать объект без явной необходимости, однако у меня еще не было времени его протестировать. Может быть, кто-то может пролить свет на то, как это будет обрабатываться?
var entity = session.Load<T>( primaryKey );
session.Delete( entity );
РЕДАКТИРОВАТЬ: Теперь проверили его, и кажется, что он все еще делает полный выбор на объекте до удаления.