Мы используем NHibernate в качестве нашего ORM на стороне сервера.
Иногда возникает необходимость удалить объект из базы данных, учитывая только тип и идентификатор этого объекта. Кроме того, удаленный объект не был извлечен ранее (поэтому он не находится в кэше сеанса или где-либо еще).
В любом случае, я использую перегрузку ISession.Delete(query)
, где запрос столь же тривиален, как и from Dummy where Id=5
.
Мой вопрос: почему NHibernate выбирает объект перед его удалением? Насколько я вижу, я плачу за двойную поездку в оба конца на сервер за операцию, которая интуитивно должна занять всего одну поездку в обе стороны.
Есть ли способ удалить объект из базы данных по его типу и идентификатору с помощью NHibernate, чтобы это заняло всего одну обратную передачу?