NHibernate просто рассматривает вашу RDBMS как хранилище данных. В большинстве случаев это означает, что вы можете позволить NHibernate сделать всю работу за вас.
Пусть NHibernate сделает каскадное удаление. Таким образом, вы можете сохранить свою логику и контроль над тем, где она находится (в вашем приложении), а не в базе данных, где ваше приложение имеет небольшой контроль или гибкость.
EDIT:
ON DELETE CASCADE не всегда показывает отличную производительность с NHibernate. Вы должны быть очень осторожны с настройками каскада ваших ассоциаций коллекций. Смотрите эту статью: http://eddii.wordpress.com/2006/11/16/hibernate-on-deletecascade-performance/
Если производительность не является большой проблемой для вас, то, как правило, NHibernate делает свою работу более чистой и менее проблемной. Джейми Иде правильно указывает:
Как и в случае с триггерами, NHibernate не будет
знать, что представление базы данных
объекта изменился из-за
работа с базой данных. Я бы избежал
используя их по этой причине в большинстве
случаи.